home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Sound Cards
/
Programming Sound Cards.iso
/
sound_56
/
sblaster.doc
< prev
next >
Wrap
Text File
|
1995-01-01
|
206KB
|
4,852 lines
▄▄▄▄ ▄▄▄▄
█ █ █
█▄▄▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄▄ ▄▄▄▄ █▄▄▄█▄ ▄ ▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄
█ █ █ █ █ █ █ █ █ █ █ █ █▄▄▄█ █▄▄▄▄ █ █▄▄ █▄▄▄▀
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
▀▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀ ▀ ▀ ▀▀▀▀ ▀▀▀▀▀▀ ▀▀▀▀▀ ▀ ▀ ▀▀▀▀▀ ▀ ▀▀▀▀▀ ▀ ▀
Programming Information v0.90
January 29, 1995
André Baresel - Craig Jackson
Copyright (c) 1995
==============================================================================
DISCLAIMER
------------------------------------------------------------------------------
ALL INFORMATION IN THIS DOCUMENT WAS OBTAINED FROM NON-CONFIDENTIAL, PUBLIC
DOMAIN, SOURCES AND LEGAL INVESTIGATION BY THE AUTHORS. APART FROM CASUAL
EXAMININATION OF THE SOUNDBLASTER OWNER'S MANUALS, ABSOLUTELY NO REFERENCE
WAS MADE TO CREATIVE LABS DOCUMENTATION INCLUDING, BUT NOT LIMITED TO,
SOFTWARE DEVELOPMENT KITS, PROGRAMMING NOTES, AND SOURCE CODE.
THIS DOCUMENT IS NEITHER GUARANTEED TO BE FIT FOR ANY PARTICULAR PURPOSE NOR
TO BE ENTIRELY CORRECT. LIABILITY RESTS WITH THE USER OF THE DOCUMENTATION
IF AND WHEN INFORMATION CONTAINED HEREIN RESULTS DIRECTLY OR INDIRECTLY IN
LOSS OF PROFITS, PRODUCTIVITY, OR SLEEP. ABSOLUTELY NO WARRANTIES OR
GUARANTIES, EITHER EXPRESSED OR IMPLIED, ACCOMPANY THIS DOCUMENT. THIS
DOCUMENT, ITS AUTHORS, AND CONTRIBUTORS CLAIM NO AFFILIATION WITH CREATIVE
LABS NOR DO THEY NECESSARILY ENDORSE ANY OF THE COMPANIES OR PRODUCTS
MENTIONED. THIS DOCUMENT IS FREELY REDISTRIBUTABLE ONLY IN ITS ORIGINAL
UNMODIFIED FORM AND PROVIDED NO DIRECT PROFIT IS MADE FROM ITS DISTRIBUTION.
ALL COPYRIGHTS AND TRADEMARKS BELONG TO THEIR RESPECTIVE OWNERS.
==============================================================================
SOUNDBLASTER MODELS
------------------------------------------------------------------------------
SoundBlaster 1.0
SoundBlaster 1.5
SoundBlaster 2.0
SoundBlaster MCV (MCA)
SoundBlaster Pro
SoundBlaster Pro2
SoundBlaster Pro Value Edition
SoundBlaster Pro MCV (MCA)
SoundBlaster 16
SoundBlaster 16 Basic Edition
SoundBlaster 16 Value Edition
SoundBlaster 16 ASP
SoundBlaster 16 MultiCD
SoundBlaster 16 MultiCD ASP
SoundBlaster 16 SCSI-2
SoundBlaster 16 SCSI-2 ASP
SoundBlaster AWE32
SoundBlaster AWE32 Value Edition
╔═══════════════════════╤═══════════════════╤═══════════════════╗
║ SOUNDBLASTER MODEL │ 8-BIT Hz (DAC) │ 16-BIT Hz (DAC) ║
║ │ MONO │ MONO ║
╠═══════════════════════╪═══════════════════╪═══════════════════╣
║ SoundBlaster 1.x │ 4000-22222 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 2.x │ 4000-45454 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster Pro │ 4000-45454 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 16 │ 4000-45454 │ 4000-45454 ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster AWE32 │ 5000-45454 │ 5000-45454 ║
╚═══════════════════════╧═══════════════════╧═══════════════════╝
╔═══════════════════════╤═══════════════════╤═══════════════════╗
║ SOUNDBLASTER MODEL │ 8-BIT Hz (DAC) │ 16-BIT Hz (DAC) ║
║ │ STEREO │ STEREO ║
╠═══════════════════════╪═══════════════════╪═══════════════════╣
║ SoundBlaster 1.x │ N/A │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 2.x │ N/A │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster Pro │ 4000-22727 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 16 │ 4000-45454 │ 4000-45454 ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster AWE32 │ 5000-45454 │ 5000-45454 ║
╚═══════════════════════╧═══════════════════╧═══════════════════╝
╔═══════════════════════╤═══════════════════╤═══════════════════╗
║ SOUNDBLASTER MODEL │ 8-BIT Hz (ADC) │ 16-BIT Hz (ADC) ║
║ │ MONO │ MONO ║
╠═══════════════════════╪═══════════════════╪═══════════════════╣
║ SoundBlaster 1.x │ 4000-11111 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 2.x │ 4000-15151 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster Pro │ 4000-45454 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 16 │ 4000-45454 │ 4000-45454 ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster AWE32 │ 5000-45454 │ 5000-45454 ║
╚═══════════════════════╧═══════════════════╧═══════════════════╝
╔═══════════════════════╤═══════════════════╤═══════════════════╗
║ SOUNDBLASTER MODEL │ 8-BIT Hz (ADC) │ 16-BIT Hz (ADC) ║
║ │ STEREO │ STEREO ║
╠═══════════════════════╪═══════════════════╪═══════════════════╣
║ SoundBlaster 1.x │ N/A │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 2.x │ N/A │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster Pro │ 4000-22727 │ N/A ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster 16 │ 4000-45454 │ 4000-45454 ║
╟───────────────────────┼───────────────────┼───────────────────╢
║ SoundBlaster AWE32 │ 5000-45454 │ 5000-45454 ║
╚═══════════════════════╧═══════════════════╧═══════════════════╝
==============================================================================
SOUNDBLASTER COMPATIBLES
------------------------------------------------------------------------------
??? AudioDrive 688
??? Laserwave Supra 16
??? MediaConcept Pro
Adaptec Audio Machine???
Addonics??? Sound Master
Add Tech Sound 2000
Advanced Gravis Gravis Ultrasound
Gravis Ultrasound MAX
Alpha Systems VR
ATI ATI Stereo F/X
AVM Technology AltraPro
Aztech Sound Galaxy???
Sound Galaxy BXII
Sound Galaxy BXII Extra
Sound Galaxy Basic 16
Sound Galaxy Basic 16 Extra
Sound Galaxy Nova 16
Sound Galaxy NXII
Sound Galaxy NX Pro
Sound Galaxy Orion 16
Sound Galaxy Pro???
Sound Galaxy Pro 16
Biostar??? MediaChips Audio Device 16 (7168VMD)
Bluepoint Sound FX 3000???
Cardinal Technologies Digital Sound Pro 16
Sound Pilot
Computer Peripherals ViVa Maestro 16
ViVa Maestro 16 VR
CPS AudioBlaster 1.0
AudioBlaster 1.5
AudioBlaster 2.0
AudioBlaster 2.5
AudioBlaster 4.0
Diamond Sonic Sound
Sonic Sound LX
DSP Solutions PORT*ABLE Sound Plus
Ensoniq Ensoniq Soundscape
Gallant Audio Plus True 16
Genoa Systems AudioBahn 16 Pro
IBM IBM Windsurfer
Kingston Technologies Omnivox
Logitech Inc. Soundman 16
Soundman Wave
Lyben Sound Card Basic
Sound Card 16 Stereo
MediaMagic OnMagic???
MediaTrix AudioTrix Pro
MediaVision Deluxe
Premium 3D
Premium 3D MultiCD
Premium 3D SCSI-2
Pro 3D
Pro Audio 16 Basic
Pro Audio Spectrum 16
Pro Audio Studio
Pro Sonic 16
MEI Premium 16 Sound Card
Microsoft Windows Sound System 2.0???
MultiWave Innovation Inc. AudioWave Platinum 16
Nu Reality Vivid 3D???
Oak Technologies Mozart-128
Orchid GameWave 32
Sound Producer
SoundWave 32
Paradise Audio Basic
Audio Professional
ProLink Computer Inc. SoundPlus
Prometheus Aria 16
Aria 16se
Reveal Sound FX/32 Wavetable (SC600)
Sigma Designs Reel Magic
Triumph Logistic Computers Audio Forge Professional
Trust Sound Expert 16 Deluxe
Turtle Beach Monte Carlo
Tropez
Yamaha Yamaha CBX-B1
Zoltrix TESS
==============================================================================
ENVIRONMENT VARIABLE
------------------------------------------------------------------------------
BLASTER=Aa Ii Dd Hh Pp Tt
Aa - Base Address 0210h, 0220h, 0230h, 0240h,
0250h, 0260h, 0280h
Ii - Interrupt Request 2, 3, 5, 7, 10
Dd - DMA Channel, 8-bit 0, 1, 3
Hh - DMA Channel, 16-bit 5, 6, 7
Pp - Base MIDI Address 0300h, 0330h
Tt - Model 1(1.x), 2(Pro), 3(2.0), 4(Pro2.0),
5(ProMCV), 6(16, AWE32)
NOTE: 16-bit DMA definition may actually refer to an 8-bit DMA alias.
==============================================================================
HARDWARE PORTS
------------------------------------------------------------------------------
02x00h C/MS 1-6 - Data Port Write SB Only
02x00h FM Music - Left Status Port Read SBPro
02x00h FM Music - Left Register Port Write SBPro
02x01h C/MS 1-6 - Register Port Write SB Only
02x01h FM Music - Left Data Register Write SBPro
02x02h C/MS7-12 - Data Port Write SB Only
02x02h FM Music - Right Status Port Read SBPro
02x02h FM Music - Right Register Port Write SBPro
02x03h C/MS7-12 - Register Port Write SB Only
02x03h FM Music - Right Data Register Write SBPro
02x04h Mixer - Register Port Write SBPro
02x05h Mixer - Data Register Read/Write SBPro
02x06h DSP - Reset Write SB
02x08h FM Music - Compatible Status Port Read SB
02x08h FM Music - Compatible Register Port Write SB
02x09h FM Music - Compatible Data Register Write SB
02x0Ah DSP - Read Data Read SB
02x0Ch DSP - Write Data or Command Write SB
02x0Ch DSP - Write Buffer Status Read SB
02x0Dh DSP - Timer Interrupt Clear Read SB16???
02x0Eh DSP - Data Available Status Read SB
02x0Eh DSP - IRQ Acknowledge, 8-bit Read SB
02x0Fh DSP - IRQ Acknowledge, 16-bit Read SB16
02x10h CD-ROM - Data Register Read SBPro
02x10h CD-ROM - Command Port Write SBPro
02x11h CD-ROM - Status Port Read SBPro
02x12h CD-ROM - Reset Write SBPro
02x13h CD-ROM - Enable Write SBPro
0388h AdLib - Status Port Read SB
0388h AdLib - Register Port Write SB
0389h AdLib - Data Register Write SB
038Ah Advanced AdLib - Status Port Read SB16
038Ah Advanced AdLib - Register Port Write SB16
038Bh Advanced AdLib - Data Register Write SB16
03x00h MPU-401 - Data Port Read/Write SB16???
03x01h MPU-401 - Status Port Read SB16???
03x01h MPU-401 - Command Port Write SB16???
0200h-0207h Joystick Varies SB
------------------------------------------------------------------------------
02x00h C/MS - Data Port (Voice 1-6) Write SB Only
DESCRIPTION
References currently selected C/MS voice 1-6 index register.
PROCEDURE
a) Write register index (02x01h)
b) Write register data (02x00h)
SEE ALSO
02x01h C/MS - Register Port (Voice 1- 6) Write
·····················································
02x02h C/MS - Data Port (Voice 7-12) Write
------------------------------------------------------------------------------
02x00h FM Music - Left Status Port Read SBPro
DESCRIPTION
Categorizes left-channel synthesizer generated timer interrupts.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (1)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┘
│ │ └─────────────────────── Timer 2 Status (1 = Expired)
│ └─────────────────────────── Timer 1 Status (1 = Expired)
└─────────────────────────────── Global Timer Status (1 = Active )
NOTES
■ Global Timer Status will be active if either timer has expired.
■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
■ Synthesizer generated timer interrupts are signalled on IRQ0.
SEE ALSO
02x00h FM Music - Left Register Port Write
02x01h FM Music - Left Data Register Write
·····················································
02x08h FM Music - Compat. Status Port Read
0338h AdLib - Status Port Read
·····················································
02x02h FM Music - Right Status Port Read
------------------------------------------------------------------------------
02x00h FM Music - Left Register Port Write SBPro
DESCRIPTION
Selects register index into left-channel synthesizer data port (02x01h)
PROCEDURE
a) Write register index (02x00h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x01h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
SEE ALSO
02x00h FM Music - Left Status Port Read
02x01h FM Music - Left Data Register Write
·····················································
02x08h FM Music - Compat. Register Port Write
0338h AdLib - Register Port Write
·····················································
02x02h FM Music - Right Register Port Write
------------------------------------------------------------------------------
02x01h C/MS - Register Port (Voice 1-6) Write SB Only
DESCRIPTION
Selects register index into C/MS voice 1-6 data port (02x00h)
PROCEDURE
a) Write register index (02x01h)
b) Write register data (02x00h)
SEE ALSO
02x00h C/MS - Data Port (Voice 1- 6) Write
·····················································
02x03h C/MS - Register Port (Voice 7-12) Write
------------------------------------------------------------------------------
02x01h FM Music - Left Data Register Write SBPro
DESCRIPTION
References currently selected left-channel synthesizer index register.
PROCEDURE
a) Write register index (02x00h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x01h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
SEE ALSO
02x00h FM Music - Left Status Port Read
02x00h FM Music - Left Register Port Write
·····················································
02x09h FM Music - Compat. Data Register Write
0339h AdLib - Data Register Write
·····················································
02x03h FM Music - Right Data Register Write
------------------------------------------------------------------------------
02x02h C/MS - Data Port (Voice 7-12) Write SB Only
DESCRIPTION
References currently selected C/MS voice 7-12 index register.
PROCEDURE
a) Write register index (02x03h)
b) Write register data (02x02h)
SEE ALSO
02x03h C/MS - Register Port (Voice 7-12) Write
·····················································
02x00h C/MS - Data Port (Voice 1- 6) Write
------------------------------------------------------------------------------
02x02h FM Music - Right Status Port Read SBPro
DESCRIPTION
Categorizes right-channel synthesizer generated timer interrupts.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (1)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┘
│ │ └─────────────────────── Timer 2 Status (1 = Expired)
│ └─────────────────────────── Timer 1 Status (1 = Expired)
└─────────────────────────────── Global Timer Status (1 = Active )
NOTES
■ Global Timer Status will be active if either timer has expired.
■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
■ Synthesizer generated timer interrupts are signalled on IRQ0.
SEE ALSO
02x02h FM Music - Right Register Port Write
02x03h FM Music - Right Data Register Write
·····················································
038Ah A. Adlib - Status Port Read
·····················································
02x00h FM Music - Left Status Port Read
------------------------------------------------------------------------------
02x02h FM Music - Right Register Port Write SBPro
DESCRIPTION
Selects register index into right-channel synthesizer data port (02x03h)
PROCEDURE
a) Write register index (02x02h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x03h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the right speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
SEE ALSO
02x02h FM Music - Right Status Port Read
02x03h FM Music - Right Data Register Write
·····················································
038Ah A. Adlib - Register Port Write
·····················································
02x00h FM Music - Left Register Port Write
------------------------------------------------------------------------------
02x03h C/MS - Register Port (Voice 7-12) Write SB Only
DESCRIPTION
Selects register index into C/MS voice 7-12 data port (02x02h)
PROCEDURE
a) Write register index (02x03h)
b) Write register data (02x02h)
SEE ALSO
02x02h C/MS - Data Port (Voice 7-12) Write
·····················································
02x01h C/MS - Register Port (Voice 1- 6) Write
------------------------------------------------------------------------------
02x03h FM Music - Right Data Register Write SBPro
DESCRIPTION
References currently selected right-channel synthesizer index register.
PROCEDURE
a) Write register index (02x02h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x03h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the right speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
SEE ALSO
02x02h FM Music - Right Status Port Read
02x02h FM Music - Right Register Port Write
·····················································
038Bh A. Adlib - Data Register Write
·····················································
02x01h FM Music - Left Data Register Write
------------------------------------------------------------------------------
02x04h Mixer - Register Port Write SBPro
DESCRIPTION
Selects register index into mixer data port (02x05h)
SELECTION BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Mixer Register Index bit 0 (SB16)
│ │ │ │ │ │ └─────┬─ Mixer Register Index bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Mixer Register Index bit 4 (SB16)
│ │ └─────────────────────┬─ Mixer Register Index bit 7-5 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
PROCEDURE
a) Write mixer index (02x04h)
b) Read/write mixer data (02x05h)
NOTES
■ See complete mixer reference later in this document.
■ MediaVision 3D-series cards use this port for index and data output.
SEE ALSO
02x05h Mixer - Data Register Read/Write
------------------------------------------------------------------------------
02x05h Mixer - Data Register Read/Write SBPro
DESCRIPTION
References currently selected mixer index register.
PROCEDURE
a) Write mixer index (02x04h)
b) Read/write mixer data (02x05h)
NOTES
■ See complete mixer reference later in this document.
SEE ALSO
02x05h Mixer - Register Port Write
------------------------------------------------------------------------------
02x06h DSP - Reset Write SB
DESCRIPTION
Performs complete reset of DSP, terminating all pending operations.
PROCEDURE
a) Write 001h
b) Wait 3.3µs minimum
c) Write 000h
d) Wait 100µs maximum for DSP Data Available (02x0Eh)
e) Read 0AAh from DSP Read Data (02x0Ah)
NOTES
■ Reset of DSP disables speaker (see DSP command 0D3h).
------------------------------------------------------------------------------
02x08h FM Music - Compatible Status Port Read SB
DESCRIPTION
Categorizes left-channel synthesizer generated timer interrupts.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (1)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┘
│ │ └─────────────────────── Timer 2 Status (1 = Expired)
│ └─────────────────────────── Timer 1 Status (1 = Expired)
└─────────────────────────────── Global Timer Status (1 = Active )
NOTES
■ Global Timer Status will be active if either timer has expired.
■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
■ Synthesizer generated timer interrupts are signalled on IRQ0.
■ Alias for FM Music - Left Status Port (02x00h) on SBPro or higher.
SEE ALSO
02x08h FM Music - Compat. Register Port Write
02x09h FM Music - Compat. Data Register Write
·····················································
02x00h FM Music - Left Status Port Read
------------------------------------------------------------------------------
02x08h FM Music - Compatible Register Port Write SB
DESCRIPTION
Selects register index into left-channel synthesizer data port (02x09h)
PROCEDURE
a) Write register index (02x08h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x09h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Left Register Port (02x00h) on SBPro or higher.
SEE ALSO
02x08h FM Music - Compat. Status Port Read
02x09h FM Music - Compat. Data Register Write
·····················································
02x00h FM Music - Left Register Port Write
------------------------------------------------------------------------------
02x09h FM Music - Compatible Data Register Write SB
DESCRIPTION
References currently selected left-channel synthesizer index register.
PROCEDURE
a) Write register index (02x08h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (02x09h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Left Data Register (02x01h) on SBPro or higher.
SEE ALSO
02x08h FM Music - Compat. Status Port Read
02x08h FM Music - Compat. Register Port Write
·····················································
02x01h FM Music - Left Data Register Write
------------------------------------------------------------------------------
02x0Ah DSP - Read Data Read SB
DESCRIPTION
Input port for DSP data byte reads.
PROCEDURE
a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
b) Input byte from DSP Read Data port (02x0Ah read)
NOTES
■ Hard system resets occasionally cause some DSPs to leave an
extraneous data byte on the bus (typically 0AAh). Perform
an explicit DSP reset at application startup to correct for this.
SEE ALSO
02x0Eh DSP - Data Available Status Read
·····················································
02x0Ch DSP - Write Data or Command Write
·····················································
02x06h DSP - Reset Write
----------------------------------------------------------------------------
02x0Ch DSP - Write Data or Command Write SB
DESCRIPTION
Output port for DSP command and data byte writes.
PROCEDURE
a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
b) Output byte to DSP Write Data or Command port (02x0Ch write)
SEE ALSO
02x0Ch DSP - Write Buffer Status Read
·····················································
02x0Ah DSP - Read Data Read
------------------------------------------------------------------------------
02x0Ch DSP - Write Buffer Status Read SB
DESCRIPTION
Indicates whether or not DSP is ready to receive data through
the DSP Write Data or Command port (02x0Ch write).
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (?)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┘
└─────────────────────────────── Write Buffer Status (0 = Ready)
PROCEDURE
a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
b) Output byte to DSP Write Data or Command port (02x0Ch write)
SEE ALSO
02x0Ch DSP - Write Data or Command Write
·····················································
02x0Eh DSP - Data Available Status Read
------------------------------------------------------------------------------
02x0Dh DSP - Timer Interrupt Clear Read SB16???
???
------------------------------------------------------------------------------
02x0Eh DSP - Data Available Status Read SB
DESCRIPTION
Indicates whether or not DSP has pending data to be read through
the DSP Read Data port (02x0Ah read).
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (?)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┘
└─────────────────────────────── Read Status (1 = Ready)
PROCEDURE
a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
b) Input byte from DSP Read Data port (02x0Ah read)
SEE ALSO
02x0Ah DSP - Read Data Read
·····················································
02x0Ch DSP - Write Buffer Status Read
------------------------------------------------------------------------------
02x0Eh DSP - IRQ Acknowledge, 8-bit Read SB
DESCRIPTION
Acknowledges an IRQ signalled by an 8-bit DSP operation.
PROCEDURE
a) IRQ: Read from IRQ Acknowledge, 8-bit port (02x0Eh)
b) IRQ: Perform Generic EOI (020h) to appropriate PICs
NOTES
■ Reflects correct DSP Data Available Status from IRQ.
SEE ALSO
02x0Fh DSP - IRQ Acknowledge, 16-bit Read
------------------------------------------------------------------------------
02x0Fh DSP - IRQ Acknowledge, 16-bit Read SB16
DESCRIPTION
Acknowledges an IRQ signalled by an 16-bit DSP operation.
PROCEDURE
a) IRQ: Read from IRQ Acknowledge, 16-bit port (02x0Fh)
b) IRQ: Perform Generic EOI (020h) to appropriate PICs
NOTES
■ Still used for aliased 16-bit DMA (see mixer register 081h)
SEE ALSO
02x0Eh DSP - IRQ Acknowledge, 8-bit Read
------------------------------------------------------------------------------
02x10h CD-ROM - Data Register Read SBPro
DESCRIPTION
Input port for active CD-ROM drive data and command response reads.
PROCEDURE
a) Loop until bit 2 = 0 or bit 1 = 0 of CD-ROM Status Port (02x11h read)
b) Input byte from CD-ROM Data Register port (02x10h read)
SEE ALSO
02x11h CD-ROM - Status Port Read
·····················································
02x13h CD-ROM - Enable Write
·····················································
02x10h CD-ROM - Command Port Write
------------------------------------------------------------------------------
02x10h CD-ROM - Command Port Write SBPro
DESCRIPTION
Output port for active CD-ROM drive command sequences.
PROCEDURE
???
NOTES
■ Command packets are seven bytes long.
■ Interrupts should be disabled during output.
SEE ALSO
02x13h CD-ROM - Enable Write
·····················································
02x10h CD-ROM - Data Register Read
------------------------------------------------------------------------------
02x11h CD-ROM - Status Port Read SBPro
DESCRIPTION
Indicates whether or not active CD-ROM drive is waiting for command data,
has pending data available, or has prepared a command response.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Write Status (0 = Busy, v1.0+)
│ │ │ │ │ │ └─────── Data Available (0 = Ready)
│ │ │ │ │ └─────────── Read Status (0 = Ready)
│ │ │ │ └─────────────┬─ Reserved (1)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
SEE ALSO
02x10h CD-ROM - Data Register Read
02x10h CD-ROM - Command Port Write
·····················································
02x13h CD-ROM - Enable Write
------------------------------------------------------------------------------
02x12h CD-ROM - Reset Write SBPro
DESCRIPTION
Performs complete reset of active CD-ROM drive.
PROCEDURE
a) Write 001h
b) Wait 82µs??? minimum
c) Write 000h
NOTES
■ Reset will close open drive doors.
SEE ALSO
02x13h CD-ROM - Enable Write
------------------------------------------------------------------------------
02x13h CD-ROM - Enable Write SBPro
DESCRIPTION
Selects active CD-ROM drive on multiple drive systems.
PROCEDURE
???
SEE ALSO
02x10h CD-ROM - Data Register Read
02x10h CD-ROM - Command Port Write
02x11h CD-ROM - Status Port Read
02x12h CD-ROM - Reset Write
------------------------------------------------------------------------------
0388h AdLib - Status Port Read SB
DESCRIPTION
Categorizes left-channel synthesizer generated timer interrupts.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (1)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┘
│ │ └─────────────────────── Timer 2 Status (1 = Expired)
│ └─────────────────────────── Timer 1 Status (1 = Expired)
└─────────────────────────────── Global Timer Status (1 = Active )
NOTES
■ Global Timer Status will be active if either timer has expired.
■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
■ Synthesizer generated timer interrupts are signalled on IRQ0.
■ Alias for FM Music - Left Status Port (02x00h).
SEE ALSO
0388h AdLib - Register Port Write
0389h AdLib - Data Register Write
·····················································
02x00h FM Music - Left Status Port Read
------------------------------------------------------------------------------
0388h AdLib - Register Port Write SB
DESCRIPTION
Selects register index into left-channel synthesizer data port (0389h)
PROCEDURE
a) Write register index (0388h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (0389h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Left Register Port (02x00h).
SEE ALSO
0388h AdLib - Status Port Read
0389h AdLib - Data Register Write
·····················································
02x00h FM Music - Left Register Port Write
------------------------------------------------------------------------------
0389h AdLib - Data Register Write SB
DESCRIPTION
References currently selected left-channel synthesizer index register.
PROCEDURE
a) Write register index (0388h)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (0389h)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Left Data Register (02x01h).
SEE ALSO
0388h AdLib - Status Port Read
0388h AdLib - Register Port Write
·····················································
02x01h FM Music - Left Data Register Write
------------------------------------------------------------------------------
038Ah Advanced AdLib - Status Port Read SB16
DESCRIPTION
Categorizes right-channel synthesizer generated timer interrupts.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (1)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┘
│ │ └─────────────────────── Timer 2 Status (1 = Expired)
│ └─────────────────────────── Timer 1 Status (1 = Expired)
└─────────────────────────────── Global Timer Status (1 = Active )
NOTES
■ Global Timer Status will be active if either timer has expired.
■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
■ Synthesizer generated timer interrupts are signalled on IRQ0.
■ Alias for FM Music - Right Status Port (02x02h) on SB16 or higher.
SEE ALSO
038Ah A. AdLib - Register Port Write
038Bh A. AdLib - Data Register Write
·····················································
02x02h FM Music - Right Status Port Read
------------------------------------------------------------------------------
038Ah Advanced AdLib - Register Port Write SB16
DESCRIPTION
Selects register index into right-channel synthesizer data port (038Bh)
PROCEDURE
a) Write register index (038Ah)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (038Bh)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Right Register Port (02x02h) on SB16 or higher.
SEE ALSO
038Ah A. AdLib - Status Port Read
038Bh A. AdLib - Data Register Write
·····················································
02x02h FM Music - Right Register Port Write
------------------------------------------------------------------------------
038Bh A. AdLib - Data Register Write SB16
DESCRIPTION
References currently selected right-channel synthesizer index register.
PROCEDURE
a) Write register index (038Ah)
b) Wait 3.3µs (0.0?µs OPL3)
c) Write register data (038Bh)
d) Wait 23µs (0.28µs OPL3)
NOTES
■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
connecting this channel to the left speaker exclusively; whereas later
models began using OPL3-compatible synthesizers, which send all output
to both the left and right speakers unless programmed to do otherwise.
■ Alias for FM Music - Right Data Register (02x03h) on SB16 or higher.
SEE ALSO
038Ah A. AdLib - Status Port Read
038Ah A. AdLib - Register Port Write
·····················································
02x03h FM Music - Right Data Register Write
------------------------------------------------------------------------------
03x00h MPU-401 - Data Port Read/Write SB16???
DESCRIPTION
Port for MPU-401 data transfer.
PROCEDURE (R)
a) Loop until bit 6 = 0 of MPU-401 Status Port (03x01h read)
b) Input byte from MPU-401 Data Register port (03x00h read/write)
PROCEDURE (W)
a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
b) Output byte to MPU-401 Data Register port (03x00h read/write)
SEE ALSO
03x01h MPU-401 - Status Port Read
·····················································
03x01h MPU-401 - Command Port Write
------------------------------------------------------------------------------
03x01h MPU-401 - Status Port Read SB16???
DESCRIPTION
Indicates whether or not MPU-401 has data pending or is awaiting data.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (?)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────── Data Read Register (0 = Ready)
└─────────────────────────────── Data Set Ready (0 = Ready)
SEE ALSO
03x00h MPU-401 - Data Port Read/Write
·····················································
03x01h MPU-401 - Command Port Write
------------------------------------------------------------------------------
03x01h MPU-401 - Command Port Write SB16???
DESCRIPTION
Output port for MPU-401 command sequences.
PROCEDURE (W)
a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
b) Output byte to MPU-401 Command Port (03x01h write)
SEE ALSO
03x01h MPU-401 - Status Port Read
·····················································
03x00h MPU-401 - Data Port Read/Write
------------------------------------------------------------------------------
0201h Joystick Status Port Read/Write SB
DESCRIPTION
Status port for joystick button and position read.
JOYSTICK BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Joystick A: Switch X (1 = Reached)
│ │ │ │ │ │ └─────── Joystick A: Switch Y (1 = Reached)
│ │ │ │ │ └─────────── Joystick B: Switch X (1 = Reached)
│ │ │ │ └─────────────── Joystick B: Switch Y (1 = Reached)
│ │ │ └─────────────────── Joystick A: Button 1 (0 = Active )
│ │ └─────────────────────── Joystick A: Button 2 (0 = Active )
│ └─────────────────────────── Joystick B: Button 1 (0 = Active )
└─────────────────────────────── Joystick B: Button 2 (0 = Active )
PROCEDURE
a) Output byte to Joystick Status Port (0201h read/write) to reset timer
b) Loop until all directional bits charge in Joystick Status Port (0201h
read/write), use elapsed time waiting on each bit proportionally
==============================================================================
DSP COMMANDS
------------------------------------------------------------------------------
003h ASP Status SB16ASP
004h DSP Status (Obsolete) SB2.0-Pro2
004h ASP ??? SB16ASP
005h ASP ??? SB16ASP
010h Direct DAC, 8-bit SB
014h DMA DAC, 8-bit SB
016h DMA DAC, 2-bit ADPCM SB
017h DMA DAC, 2-bit ADPCM Reference SB
01Ch Auto-Initialize DMA DAC, 8-bit SB2.0
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM Reference SB2.0
020h Direct ADC, 8-bit SB
024h DMA ADC, 8-bit SB
028h Direct ADC, 8-bit (Burst) SB-Pro2
02Ch Auto-Initialize DMA ADC, 8-bit SB2.0
030h MIDI Read Poll SB
031h MIDI Read Interrupt SB
032h MIDI Read Timestamp Poll SB???
033h MIDI Read Timestamp Interrupt SB???
034h MIDI Read Poll + Write Poll (UART) SB2.0
035h MIDI Read Interrupt + Write Poll (UART) SB2.0???
037h MIDI Read Timestamp Interrupt + Write Poll (UART) SB2.0???
038h MIDI Write Poll SB
040h Set Time Constant SB
041h Set Sample Rate SB16
045h Continue Auto-Initialize DMA, 8-bit SB16
047h Continue Auto-Initialize DMA, 16-bit SB16
048h Set DMA Block Size SB2.0
074h DMA DAC, 4-bit ADPCM SB
075h DMA DAC, 4-bit ADPCM Reference SB
076h DMA DAC, 2.6-bit ADPCM SB
077h DMA DAC, 2.6-bit ADPCM Reference SB
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM Reference SB2.0
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference SB2.0
080h Silence DAC SB
090h Auto-Initialize DMA DAC, 8-bit (High Speed) SB2.0-Pro2
098h Auto-Initialize DMA ADC, 8-bit (High Speed) SB2.0-Pro2
0A0h Disable Stereo Input Mode SBPro Only
0A8h Enable Stereo Input Mode SBPro Only
0Bxh/0Cxh Generic DAC/ADC DMA (16-bit, 8-bit) SB16
0D0h Halt DMA Operation, 8-bit SB
0D1h Enable Speaker SB
0D3h Disable Speaker SB
0D4h Continue DMA Operation, 8-bit SB
0D5h Halt DMA Operation, 16-bit SB16
0D6h Continue DMA Operation, 16-bit SB16
0D8h Speaker Status SB
0D9h Exit Auto-Initialize DMA Operation, 16-bit SB16
0DAh Exit Auto-Initialize DMA Operation, 8-bit SB2.0
0E0h DSP Identification SB2.0
0E1h DSP Version SB
0E3h DSP Copyright SBPro2???
0E4h Write Test Register SB2.0
0E8h Read Test Register SB2.0
0F0h Sine Generator SB
0F1h DSP Auxiliary Status (Obsolete) SB-Pro2
0F2h IRQ Request, 8-bit SB
0F3h IRQ Request, 16-bit SB16
0FBh DSP Status SB16
0FCh DSP Auxiliary Status SB16
0FDh DSP Command Status SB16
------------------------------------------------------------------------------
003h ASP Status SB16ASP
COMMAND <-STATUS
???
------------------------------------------------------------------------------
004h DSP Status (Obsolete) SB2.0-Pro2
COMMAND <-STATUS
DESCRIPTION
Retrieves information about pending DSP operations.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Speaker Status (1 = Active)
│ │ │ │ │ │ └─────── Stereo ADC Status (1 = Active)
│ │ │ │ │ └─────────── Reserved (0)
│ │ │ │ └─────────────── Direct ADC 8-bit Burst (1 = Active)
│ │ │ └─────────────────── DMA DAC 2-bit ADPCM (1 = Active)
│ │ └─────────────────────── DMA DAC 2.6-bit ADPCM (1 = Active)
│ └─────────────────────────── DMA DAC 4-bit ADPCM (1 = Active)
└─────────────────────────────── DMA DAC 8-bit (1 = Active)
NOTES
■ SoundBlaster 2.0 implements only bit 3 and 7.
■ SoundBlaster Pro models do not support bit 7.
SEE ALSO
0F1h DSP Auxiliary Status (Obsolete)
·····················································
0FBh DSP Status
0FCh DSP Auxiliary Status
0FDh DSP Command Status
·····················································
0D8h Speaker Status
------------------------------------------------------------------------------
004h ASP ??? SB16ASP
COMMAND->???
???
------------------------------------------------------------------------------
005h ASP ??? SB16ASP
COMMAND->DATAHIBYTE->DATALOBYTE
???
------------------------------------------------------------------------------
010h Direct DAC, 8-bit SB
COMMAND->SAMPLEBYTE
DESCRIPTION
Outputs single sample.
PROCEDURE
a) Send Direct DAC, 8-bit command (010h) and sample
b) Wait for correct timing
NOTES
■ Direct mode maximum sample rate is 23KHz.
SEE ALSO
020h Direct ADC, 8-bit
------------------------------------------------------------------------------
014h DMA DAC, 8-bit SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 8-bit DMA transfer.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 8-bit command (014h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = SAMPLES - 1
NOTES
■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
01Ch Auto-Initialize DMA DAC, 8-bit
090h Auto-Initialize DMA DAC, 8-bit (High Speed)
0Cxh Generic DAC/ADC DMA, 8-bit
·····················································
017h DMA DAC, 2-bit ADPCM Reference
075h DMA DAC, 4-bit ADPCM Reference
077h DMA DAC, 2.6-bit ADPCM Reference
·····················································
024h DMA ADC, 8-bit
------------------------------------------------------------------------------
016h DMA DAC, 2-bit ADPCM SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 2-bit ADPCM DMA transfer with accumulated reference byte.
This operation uses 8-bit DMA mode.
PROCEDURE (after command 017h)
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 2-bit ADPCM command (016h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 3)/4
NOTES
■ Supports up to 11KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
017h DMA DAC, 2-bit ADPCM Reference
·····················································
074h DMA DAC, 4-bit ADPCM
076h DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
017h DMA DAC, 2-bit ADPCM Reference SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 2-bit ADPCM DMA transfer with new reference byte. This
operation uses 8-bit DMA mode.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 2-bit ADPCM Reference command (017h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 3)/4 + 1
NOTES
■ Supports up to 11KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
016h DMA DAC, 2-bit ADPCM
·····················································
075h DMA DAC, 4-bit ADPCM Reference
077h DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
01Ch Auto-Initialize DMA DAC, 8-bit SB2.0
COMMAND
DESCRIPTION
Initiates auto-initialize 8-bit DMA transfer.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 058h + channel)
f) Perform Auto-Initialize DMA DAC, 8-bit command (01Ch)
g) IRQ: Prepare next half of buffer (not always in handler)
h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
i) Loop to G until complete
j) Perform Disable Speaker command (0D3h)
k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
NOTES
■ Supports up to 23KHz (11.5KHz stereo???)
■ Exit auto-initialized mode by programming single-cycle DMA output or
with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
LENGTH = (SAMPLES + 1)/2 - 1
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
090h Auto-Initialize DMA DAC, 8-bit (High Speed)
0Cxh Generic DAC/ADC DMA, 8-bit
------------------------------------------------------------------------------
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM Reference SB2.0
COMMAND
DESCRIPTION
Initiates auto-initialize 2-bit ADPCM DMA transfer with reference byte.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 058h + channel)
f) Perform Auto-Initialize DMA DAC, 2-bit ADPCM command (01Fh)
g) IRQ: Prepare next half of buffer (not always in handler)
h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
i) Loop to G until complete
j) Perform Disable Speaker command (0D3h)
k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
NOTES
■ Exit auto-initialized mode by programming single-cycle DMA output or
with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
■ Ensoniq Soundscape does not support ADPCM.
SAMPLEBYTES = (SAMPLES + 3)/4 + 1
LENGTH = (SAMPLEBYTES + 1)/2 - 1
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
017h DMA DAC, 2-bit ADPCM Reference
·····················································
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM Reference
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
020h Direct ADC, 8-bit SB
COMMAND <-SAMPLEBYTE
DESCRIPTION
Inputs single sample.
PROCEDURE
a) Send Direct ADC, 8-bit command (020h)
b) Read sample
c) Wait for correct timing
NOTES
■ Direct mode maximum sample rate is 23KHz.
SEE ALSO
010h Direct DAC, 8-bit
------------------------------------------------------------------------------
024h DMA ADC, 8-bit SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 8-bit DMA transfer (record).
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 044h + channel)
e) Perform DMA ADC, 8-bit command (024h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = SAMPLES - 1
NOTES
■ SoundBlasters prior to SB16 return the first sample in direct mode.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
02Ch Auto-Initialize DMA ADC, 8-bit
098h Auto-Initialize DMA ADC, 8-bit (High Speed)
0Cxh Generic DAC/ADC DMA, 8-bit
------------------------------------------------------------------------------
028h Direct ADC, 8-bit (Burst) SB-Pro2
COMMAND <-SAMPLEBYTE0...SAMPLEBYTEn
DESCRIPTION
???
PROCEDURE
???
NOTES
■ Terminate operation with DSP reset.
SEE ALSO
020h Direct ADC, 8-bit
------------------------------------------------------------------------------
02Ch Auto-Initialize DMA ADC, 8-bit SB2.0
COMMAND
DESCRIPTION
Initiates auto-initialize 8-bit DMA transfer (record).
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 054h + channel)
f) Perform Auto-Initialize DMA ADC, 8-bit command (02Ch)
g) IRQ: Prepare next half of buffer (not always in handler)
h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
i) Loop to G until complete
j) Perform Disable Speaker command (0D3h)
k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
NOTES
■ Supports up to 23KHz (11.5KHz stereo???)
■ Exit auto-initialized mode by programming single-cycle DMA output or
with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
LENGTH = (SAMPLES + 1)/2 - 1
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
098h Auto-Initialize DMA ADC, 8-bit (High Speed)
0Cxh Generic DAC/ADC DMA, 8-bit
------------------------------------------------------------------------------
030h MIDI Read Poll SB
COMMAND <-MIDICODE
DESCRIPTION
Reads MIDI code.
PROCEDURE
a) Send MIDI Read Poll command (030h)
b) Read MIDI code when available
NOTES
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
031h MIDI Read Interrupt
·····················································
032h MIDI Read Timestamp Poll
033h MIDI Read Timestamp Interrupt
·····················································
034h MIDI Read Poll + Write Poll (UART)
035h MIDI Read Interrupt + Write Poll (UART)
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
·····················································
038h MIDI Write Poll
------------------------------------------------------------------------------
031h MIDI Read Interrupt SB
COMMAND {<-MIDICODE}
DESCRIPTION
Generates interrupt when MIDI code is available.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform MIDI Read Interrupt command (031h)
c) IRQ: Read MIDI code
d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
e) Perform MIDI Read Interrupt command (031h) to terminate
NOTES
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
033h MIDI Read Timestamp Interrupt
·····················································
035h MIDI Read Interrupt + Write Poll (UART)
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
·····················································
030h MIDI Read Poll
-----------------------------------------------------------------------------
032h MIDI Read Timestamp Poll SB???
COMMAND <-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE
DESCRIPTION
Reads MIDI code with timestamp.
PROCEDURE
a) Send MIDI Read Timestamp Poll command (032h)
b) Read timestamp and MIDI code when available
NOTES
■ Timestamp if 24-bit value containing the time since the last MIDI
command in milliseconds.
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
033h MIDI Read Timestamp Interrupt
·····················································
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
033h MIDI Read Timestamp Interrupt SB???
COMMAND {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}
DESCRIPTION
Generates interrupt when MIDI code is available, includes timestamp.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform MIDI Read Interrupt with Timestamp command (033h)
c) IRQ: Read MIDI code with timestamp
d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
e) Perform MIDI Read Interrupt with Timestamp command (033h) to terminate
NOTES
■ Timestamp if 24-bit value containing the time since the last MIDI
command in milliseconds.
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
032h MIDI Read Timestamp Poll
·····················································
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
034h MIDI Read Poll + Write Poll (UART) SB2.0
COMMAND [->MIDICODE] [<-MIDICODE]
DESCRIPTION
Enables UART mode, where all DSP read/writes are interpreted as MIDI codes.
PROCEDURE
a) Send MIDI Read Poll + Write Poll (UART) command (034h)
b) Send and receive MIDI codes
c) Reset DSP to terminate
NOTES
■ Disable UART mode with DSP reset (port 02x06h)
■ Read/write status must still be checked (port 02x0Eh/02x0Ch)
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
030h MIDI Read Poll
038h MIDI Write Poll
·····················································
035h MIDI Read Interrupt + Write Poll (UART)
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
035h MIDI Read Interrupt + Write Poll (UART) SB2.0???
COMMAND [->MIDICODE] {<-MIDICODE}
DESCRIPTION
Enables UART mode with interrupt, where all DSP writes are interpreted as
MIDI codes and interrupts are generated when a MIDI code is to be read.
PROCEDURE
a) Send MIDI Read Interrupt + Write Poll (UART) command (035h)
b) Send and receive MIDI codes (see command 031h)
c) Reset DSP to terminate
NOTES
■ Disable UART mode with DSP reset (port 02x06h)
■ Write buffer status must still be checked (port 02x0Ch)
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
034h MIDI Read Poll + Write Poll (UART)
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
·····················································
031h MIDI Read Interrupt
------------------------------------------------------------------------------
037h MIDI Read Timestamp Interrupt + Write Poll (UART) SB2.0???
COMMAND [->MIDICODE]
{<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}
DESCRIPTION
Enables UART mode with interrupt, where all DSP writes are interpreted as
MIDI codes and interrupts are generated when a timestamped MIDI code is
to be read.
PROCEDURE
a) Send MIDI Read Timestamp Interrupt + Write Poll (UART) command (037h)
b) Send and receive MIDI codes with timestamps (see command 033h)
c) Reset DSP to terminate
NOTES
■ Disable UART mode with DSP reset (port 02x06h)
■ Write buffer status must still be checked (port 02x0Ch)
■ SoundBlasters buffer up to 64bytes of MIDI data.
SEE ALSO
034h MIDI Read Poll + Write Poll (UART)
035h MIDI Read Interrupt + Write Poll (UART)
·····················································
038h MIDI Write Poll
------------------------------------------------------------------------------
038h MIDI Write Poll SB
COMMAND->MIDICODE
DESCRIPTION
Writes MIDI code.
PROCEDURE
a) Send MIDI Write Poll command (038h) and data
SEE ALSO
034h MIDI Read Poll + Write Poll (UART)
035h MIDI Read Interrupt + Write Poll (UART)
037h MIDI Read Timestamp Interrupt + Write Poll (UART)
·····················································
030h MIDI Read Poll
------------------------------------------------------------------------------
040h Set Time Constant SB
COMMAND->TIMEBYTE
DESCRIPTION
Sets sample rate through internal I/O transfer timer.
FORMULA
TimeConstant = 256 - (1000000 / (SampleChannels * SampleRate))
NOTES
■ For non-SoundBlaster Pro cards, always set SampleChannels equal to one.
SEE ALSO
041h Set Sample Rate
------------------------------------------------------------------------------
041h Set Sample Rate SB16
COMMAND->RATEHIBYTE->RATELOBYTE
DESCRIPTION
Sets sample rate.
NOTES
■ Sampling rate precision is truncated to nearest time constant.
■ Sampling rate is programmed independent of stereo or monaural modes.
SEE ALSO
040h Set Time Constant
------------------------------------------------------------------------------
045h Continue Auto-Initialize DMA, 8-bit SB16
COMMAND
DESCRIPTION
Continues a halted auto-initialized 8-bit DMA operation.
SEE ALSO
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
0Cxh Generic DAC/ADC, 8-bit
·····················································
01Ch Auto-Initialize DMA DAC, 8-bit
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM
02Ch Auto-Initialize DMA ADC, 8-bit
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM
090h Auto-Initialize DMA DAC, 8-bit (High Speed)
098h Auto-Initialize DMA ADC, 8-bit (High Speed)
------------------------------------------------------------------------------
047h Continue Auto-Initialize DMA, 16-bit SB16
COMMAND
DESCRIPTION
Continues a halted auto-initialized 16-bit DMA operation.
SEE ALSO
0D9h Exit Auto-Initialize DMA, 16-bit
·····················································
0Bxh Generic DAC/ADC, 16-bit
------------------------------------------------------------------------------
048h Set DMA Block Size SB2.0
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Set DMA transfer size for auto-initialize and high speed modes.
SAMPLEBYTES = SAMPLES 8-bit
(SAMPLES-1 + 1)/2 + 1 4-bit ADPCM + Reference
(SAMPLES-1 + 2)/3 + 1 2.6-bit ADPCM + Reference
(SAMPLES-1 + 3)/4 + 1 2-bit ADPCM + Reference
LENGTH = SAMPLEBYTES - 1 (Single Cycle)
(SAMPLEBYTES + 1)/2 - 1 (Auto-Init )
NOTES
■ Length is always equal to the number of bytes to transfer minus one.
SEE ALSO
01Ch Auto-Initialize DMA DAC, 8-bit
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM
02Ch Auto-Initialize DMA ADC, 8-bit
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM
090h Auto-Initialize DMA DAC, 8-bit (High Speed)
098h Auto-Initialize DMA ADC, 8-bit (High Speed)
------------------------------------------------------------------------------
074h DMA DAC, 4-bit ADPCM SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 4-bit ADPCM DMA transfer with accumulated reference byte.
This operation uses 8-bit DMA mode.
PROCEDURE (after command 075h)
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 4-bit ADPCM command (074h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 1)/2
NOTES
■ Supports up to 12KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
074h DMA DAC, 4-bit ADPCM Reference
·····················································
016h DMA DAC, 2-bit ADPCM
076h DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
075h DMA DAC, 4-bit ADPCM Reference SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 4-bit ADPCM DMA transfer with new reference byte. This
operation uses 8-bit DMA mode.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 4-bit ADPCM Reference command (075h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 1)/2 + 1
NOTES
■ Supports up to 12KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
075h DMA DAC, 4-bit ADPCM
·····················································
017h DMA DAC, 2-bit ADPCM Reference
077h DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
076h DMA DAC, 2.6-bit ADPCM SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 2.6-bit ADPCM DMA transfer with accumulated reference byte.
This operation uses 8-bit DMA mode.
PROCEDURE (after command 077h)
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 2.6-bit ADPCM command (076h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 2)/3
NOTES
■ Supports up to 13KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
077h DMA DAC, 2.6-bit ADPCM Reference
·····················································
016h DMA DAC, 2-bit ADPCM
074h DMA DAC, 4-bit ADPCM
------------------------------------------------------------------------------
077h DMA DAC, 2.6-bit ADPCM Reference SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Initiates 2.6-bit ADPCM DMA transfer with new reference byte. This
operation uses 8-bit DMA mode.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Enable Speaker command (0D1h)
d) Setup DMA controller (mode = 048h + channel)
e) Perform DMA DAC, 2.6-bit ADPCM Reference command (077h)
f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
g) Perform Disable Speaker command (0D3h)
LENGTH = (SAMPLES-1 + 2)/3 + 1
NOTES
■ Supports up to 13KHz on SoundBlaster 1.x
■ Ensoniq Soundscape does not support ADPCM.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
·····················································
076h DMA DAC, 2.6-bit ADPCM
·····················································
017h DMA DAC, 2-bit ADPCM Reference
075h DMA DAC, 4-bit ADPCM Reference
------------------------------------------------------------------------------
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM Reference SB2.0
COMMAND
DESCRIPTION
Initiates auto-initialize 4-bit ADPCM DMA transfer with reference byte.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 058h + channel)
f) Perform Auto-Initialize DMA DAC, 4-bit ADPCM command (07Dh)
g) IRQ: Prepare next half of buffer (not always in handler)
h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
i) Loop to G until complete
j) Perform Disable Speaker command (0D3h)
k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
NOTES
■ Exit auto-initialized mode by programming single-cycle DMA output or
with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
■ Ensoniq Soundscape does not support ADPCM.
SAMPLEBYTES = (SAMPLES + 1)/2 + 1
LENGTH = (SAMPLEBYTES + 1)/2 - 1
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
075h DMA DAC, 4-bit ADPCM Reference
·····················································
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM Reference
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference SB2.0
COMMAND
DESCRIPTION
Initiates auto-initialize 2.6-bit ADPCM DMA transfer with reference byte.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 058h + channel)
f) Perform Auto-Initialize DMA DAC, 2.6-bit ADPCM command (07Fh)
g) IRQ: Prepare next half of buffer (not always in handler)
h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
i) Loop to G until complete
j) Perform Disable Speaker command (0D3h)
k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
NOTES
■ Exit auto-initialized mode by programming single-cycle DMA output or
with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
■ Ensoniq Soundscape does not support ADPCM.
SAMPLEBYTES = (SAMPLES + 2)/3 + 1
LENGTH = (SAMPLEBYTES + 1)/2 - 1
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
077h DMA DAC, 2.6-bit ADPCM Reference
·····················································
01Fh Auto-Initialize DMA DAC, 2-bit ADPCM Reference
07Dh Auto-Initialize DMA DAC, 4-bit ADPCM Reference
------------------------------------------------------------------------------
080h Silence DAC SB
COMMAND->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Outputs block of silent samples at current sample rate, and signals
IRQ when complete.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Silence DAC command (080h)
d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
e) Remove IRQ handler (restore vector, restore PIC mask)
LENGTH = SAMPLES - 1
SEE ALSO
040h Set Time Constant
------------------------------------------------------------------------------
090h Auto-Initialize DMA DAC, 8-bit (High Speed) SB2.0-Pro2
COMMAND
DESCRIPTION
Initiates 8-bit DMA transfer (>23KHz).
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 058h + channel)
f) Perform Auto-Initialize DMA DAC, 8-bit (HighSpeed) command (090h)
g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
h) Reset DSP (or terminate normally on SB16+)
NOTES
■ High speed mode ignores DSP commands during transfers (<SB16).
■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
01Ch Auto-Initialize DMA DAC, 8-bit
0Cxh Generic DAC/ADC DMA, 8-bit
------------------------------------------------------------------------------
098h Auto-Initialize DMA ADC, 8-bit (High Speed) SB2.0-Pro2
COMMAND
DESCRIPTION
Initiates 8-bit DMA transfer (record, >23KHz).
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Perform Set DMA Block Size command (048h)
d) Perform Enable Speaker command (0D1h)
e) Setup DMA controller (mode = 054h + channel)
f) Perform Auto-Initialize DMA ADC, 8-bit (HighSpeed) command (098h)
g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
h) Reset DSP (or terminate normally on SB16+)
NOTES
■ High speed mode ignores DSP commands during transfers (<SB16).
SEE ALSO
048h Set DMA Block Size
·····················································
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
02Ch Auto-Initialize DMA ADC, 8-bit
0Cxh Generic DAC/ADC DMA, 8-bit
------------------------------------------------------------------------------
0A0h Disable Stereo Input Mode SBPro Only
COMMAND
DESCRIPTION
Selects monaural input mode on SoundBlaster Pro.
NOTES
■ Monaural input mode is default.
■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
SEE ALSO
0A8h Enable Stereo Input Mode
·····················································
0F1h DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
0A8h Enable Stereo Input Mode SBPro Only
COMMAND
DESCRIPTION
Selects stereo input mode on SoundBlaster Pro.
NOTES
■ Monaural input mode is default.
■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
■ BUG: Stereo input mode results in playback static.
SEE ALSO
0A0h Disable Stereo Input Mode
·····················································
0F1h DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
0Bxh/0Cxh Generic DAC/ADC DMA (16-bit, 8-bit) SB16
COMMAND->MODE->LENGTHLOBYTE->LENGTHHIBYTE
DESCRIPTION
Generalized sampling and playback command (includes 16-bit operations).
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform Set Time Constant command (040h), or otherwise set sample rate
c) Setup DMA controller (mode = mode + channel)
d) Perform Generic DAC/ADC DMA command (0Bxh/0Cxh)
e) IRQ: Acknowledge IRQ (input from IRQ Acknowledge port - 02x0Eh/02x0Fh;
perform Generic EOI (020h) to appropriate PICs)
f) Terminate transfer, method dependent on mode
COMMAND BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║(7)│(6)│(5)│(4)│ 3 │ 2 │ 1 │[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reserved (0)
│ │ │ │ │ │ └─────── FIFO Mode (0 = Disable, 1 = Enable)
│ │ │ │ │ └─────────── DMA Mode (0 = Single, 1 = Auto-Init)
│ │ │ │ └─────────────── Transfer Mode (0 = DAC, 1 = ADC)
│ │ │ └─────────────────┐
│ │ └─────────────────────┼─ Sampling Resolution
│ └─────────────────────────┤ 1011b = 16-bit, 1100b = 8-bit
└─────────────────────────────┘
MODE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│ 5 │ 4 │[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Sample Mode (0 = Unsigned, 1 = Signed)
│ │ └─────────────────────── Stereo Mode (0 = Monaural, 1 = Stereo)
│ └─────────────────────────┬─ Reserved (0)
└─────────────────────────────┘
LENGTH = SAMPLES - 1 (even for 16-bit samples)
NOTES
■ Enable FIFO mode for high speed mode or large data transfers.
■ BUG: SoundBlaster 16 ADC only accurate to 12-bits.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0D4h Continue DMA Operation, 8-bit
045h Continue Auto-Initialize DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
·····················································
0D5h Halt DMA Operation, 16-bit
0D6h Continue DMA Operation, 16-bit
047h Continue Auto-Initialize DMA, 16-bit
0D9h Exit Auto-Initialize DMA Operation, 16-bit
·····················································
014h DMA DAC, 8-bit
024h DMA ADC, 8-bit
·····················································
01Ch Auto-Initialize DMA DAC, 8-bit
02Ch Auto-Initialize DMA ADC, 8-bit
·····················································
090h Auto-Initialize DMA DAC, 8-bit (High Speed)
098h Auto-Initialize DMA ADC, 8-bit (High Speed)
------------------------------------------------------------------------------
0D0h Halt DMA Operation, 8-bit SB
COMMAND
DESCRIPTION
Pauses 8-bit single-cycle DMA operation.
NOTES
■ Halts every 8-bit DMA mode on SoundBlaster 16.
■ BUG: Halts 16-bit DMA operation on early SoundBlaster 16s (4.04).
SEE ALSO
0D4h Continue DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
------------------------------------------------------------------------------
0D1h Enable Speaker SB
COMMAND
DESCRIPTION
Enables speaker output.
NOTES
■ Reset of DSP disables speaker.
■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
■ Originator of noisy 'pops' on some models (capacitor discharge).
SEE ALSO
0D3h Disable Speaker
------------------------------------------------------------------------------
0D3h Disable Speaker SB
COMMAND
DESCRIPTION
Disables speaker output.
NOTES
■ Reset of DSP disables speaker.
■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
■ Originator of noisy 'pops' on some models (capacitor discharge).
SEE ALSO
0D1h Enable Speaker
------------------------------------------------------------------------------
0D4h Continue DMA Operation, 8-bit SB
COMMAND
DESCRIPTION
Continues a halted 8-bit single-cycle DMA operation.
NOTES
■ Continues every 8-bit DMA mode on SoundBlaster 16.
■ BUG: Continues 16-bit DMA operation on early SoundBlaster 16 (4.04).
SEE ALSO
0D0h Halt DMA Operation, 8-bit
0DAh Exit Auto-Initialize DMA Operation, 8-bit
------------------------------------------------------------------------------
0D5h Halt DMA Operation, 16-bit SB16
COMMAND
DESCRIPTION
Pauses any 16-bit DMA operation.
SEE ALSO
0D6h Continue DMA Operation, 16-bit
0D9h Exit Auto-Initialize DMA Operation, 16-bit
------------------------------------------------------------------------------
0D6h Continue DMA Operation, 16-bit SB16
COMMAND
DESCRIPTION
Continues any halted 16-bit DMA operation.
SEE ALSO
0D5h Halt DMA Operation, 16-bit
0D9h Exit Auto-Initialize DMA Operation, 16-bit
------------------------------------------------------------------------------
0D8h Speaker Status SB
COMMAND <-STATUS
DESCRIPTION
Determines current status of speaker.
STATUS BYTE
000h = Disabled
0FFh = Enabled
NOTES
■ Reset of DSP disables speaker.
SEE ALSO
0D1h Enable Speaker
0D3h Disable Speaker
·····················································
004h DSP Status (Obsolete)
0F1h DSP Auxiliary Status (Obsolete)
·····················································
0FBh DSP Status
0FCh DSP Auxiliary Status
0FDh DSP Command Status
------------------------------------------------------------------------------
0D9h Exit Auto-Initialize DMA Operation, 16-bit SB16
COMMAND
DESCRIPTION
Terminates auto-initialized 16-bit DMA operation after current block.
PROCEDURE
a) Perform Disable Speaker command (0D3h)
b) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
c) Perform Exit Auto-Initialize DMA Operation, 16-bit command (0D9h)
d) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
NOTES
■ Halt commands are required for immediate termination and to quiet SB16.
SEE ALSO
0D5h Halt DMA Operation, 16-bit
047h Continue Auto-Initialize DMA, 16-bit
·····················································
0D3h Disable Speaker
------------------------------------------------------------------------------
0DAh Exit Auto-Initialize DMA Operation, 8-bit SB2.0
COMMAND
DESCRIPTION
Terminates auto-initialized 8-bit DMA operations after current block.
PROCEDURE
a) Perform Disable Speaker command (0D3h)
b) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
c) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
d) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
NOTES
■ Halt commands are required for immediate termination and to quiet SB16.
SEE ALSO
0D0h Halt DMA Operation, 8-bit
045h Continue Auto-Initialize DMA, 8-bit
·····················································
0D3h Disable Speaker
------------------------------------------------------------------------------
0E0h DSP Identification SB2.0
COMMAND->DATA <-NOT(DATA)
DESCRIPTION
Returns bitwise NOT of data byte.
NOTES
■ Results reliable only after DSP reset on early models.
SEE ALSO
0E1h DSP Version
0E3h DSP Copyright
------------------------------------------------------------------------------
0E1h DSP Version SB
COMMAND <-MAJORVERSIONBYTE<-MINORVERSIONBYTE
DESCRIPTION
Determines DSP major and minor version.
MODEL VERSION
SoundBlaster 1.0 1.?? (1.05???)
SoundBlaster 1.5 1.?? (1.05???)
SoundBlaster 2.0 2.xx (2.01)
SoundBlaster Pro 3.00 (???)
SoundBlaster Pro 2 3.01+ (3.01, 3.02)
SoundBlaster 16 4.0x (4.04, 4.05)
SoundBlaster 16 SCSI-2 4.11 (4.11)
SoundBlaster AWE32 4.12+ (4.12)
NOTES
■ Ensure that no other card is mapped at the same port address by
performing this command twice, checking for a consistent result.
■ BUG: Some SB1.x clones errantly return version 2.00.
■ BUG: Some SB16 SCSI-2s experience daughterboard communication errors.
SEE ALSO
0E0h DSP Identification
0E3h DSP Copyright
------------------------------------------------------------------------------
0E3h DSP Copyright SBPro2???
COMMAND <-ASCII0...ASCIIn<-000h
DESCRIPTION
Reads DSP copyright string.
PROCEDURE
a) Send DSP Copyright command byte (0E3h)
b) Read string byte
c) Loop to B while string byte is not zero
SEE ALSO
0E0h DSP Identification
0E1h DSP Version
------------------------------------------------------------------------------
0E4h Write Test Register SB2.0
COMMAND->TESTBYTE
DESCRIPTION
Writes diagnostic register.
NOTES
■ DSP reset does not clear the test register.
SEE ALSO
0E8h Read Test Register
------------------------------------------------------------------------------
0E8h Read Test Register SB2.0
COMMAND <-TESTBYTE
DESCRIPTION
Reads diagnostic register.
NOTES
■ DSP reset does not clear the test register.
SEE ALSO
0E4h Write Test Register
------------------------------------------------------------------------------
0F0h Sine Generator SB
COMMAND
DESCRIPTION
Diagnostic peak-to-peak sine wave generator.
NOTES
■ Disable sound with DSP reset.
■ Sinusodal frequency is about 2KHz.
■ Sets time constant to approximately 0C0h (15625Hz).
■ Enables speaker on models prior to SoundBlaster 16.
------------------------------------------------------------------------------
0F1h DSP Auxiliary Status (Obsolete) SB-Pro2
COMMAND <-STATUS
DESCRIPTION
Retrieves auxiliary information about pending DSP operations.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │[1]│ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Speaker Status (0 = Enabled)
│ │ │ │ │ │ └─────── Reserved (1)
│ │ │ │ │ └─────────── DSPC 0ACh ???
│ │ │ │ └─────────────── Stereo Input Mode (1 = Stereo)
│ │ │ └─────────────────── Reserved (1)
│ │ └─────────────────────── DSPC 020h-02Fh (SB1.x) ???
│ └─────────────────────────── DSPC 02Dh-02Fh (SB1.x) ???
└─────────────────────────────── ???
NOTES
■ SoundBlaster Pro introduces bit 3.
SEE ALSO
004h DSP Status (Obsolete)
·····················································
0FBh DSP Status
0FCh DSP Auxiliary Status
0FDh DSP Command Status
·····················································
0D8h Speaker Status
------------------------------------------------------------------------------
0F2h IRQ Request, 8-bit SB
COMMAND
DESCRIPTION
Triggers 8-bit interrupt.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform IRQ Request, 8-bit command (0F2h)
c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
perform Generic EOI (020h) to appropriate PICs)
SEE ALSO
0F3h Interrupt Request, 16-bit
------------------------------------------------------------------------------
0F3h IRQ Request, 16-bit SB16
COMMAND
DESCRIPTION
Triggers 16-bit interrupt.
PROCEDURE
a) Install IRQ handler (hook vector, update PIC mask)
b) Perform IRQ Request, 16-bit command (0F3h)
c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 16-bit port - 02x0Fh;
perform Generic EOI (020h) to appropriate PICs)
SEE ALSO
0F2h Interrupt Request, 8-bit
------------------------------------------------------------------------------
0FBh DSP Status SB16
COMMAND <-STATUS
DESCRIPTION
Retrieves information about pending DSP operations.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── DMA DAC, 8-bit (1 = Active)
│ │ │ │ │ │ └─────── DMA ADC, 8-bit (1 = Active)
│ │ │ │ │ └─────────── DMA DAC, 16-bit (1 = Active)
│ │ │ │ └─────────────── DMA ADC, 16-bit (1 = Active)
│ │ │ └─────────────────── Virtual Speaker (1 = Active)
│ │ └─────────────────────── ???
│ └─────────────────────────── DSPC 04Fh ???
└─────────────────────────────── Time Constant (1 = Modified)
NOTES
■ Time Constant bit will not be set if too large a time constant was
programmed (low sample rate).
■ MediaVision 3D-series cards use this command for DMA and IRQ selection.
SEE ALSO
0FCh DSP Auxiliary Status
0FDh DSP Command Status
·····················································
004h DSP Status (Obsolete)
0F1h DSP Auxiliary Status (Obsolete)
·····················································
0D8h Speaker Status
------------------------------------------------------------------------------
0FCh DSP Auxiliary Status SB16
COMMAND <-STATUS
DESCRIPTION
Retrieves auxiliary information about pending DMA operations.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── ???
│ │ │ │ │ │ └─────── DAC/ADC DMA (1 = Synchronous)
│ │ │ │ │ └─────────── Auto-Init DMA, 8-bit (1 = Active)
│ │ │ │ └─────────────── ???
│ │ │ └─────────────────── Auto-Init DMA, 16-bit (1 = Active)
│ │ └─────────────────────── ???
│ └─────────────────────────── ???
└─────────────────────────────── ???
SEE ALSO
0FBh DSP Status
0FDh DSP Command Status
·····················································
004h DSP Status (Obsolete)
0F1h DSP Auxiliary Status (Obsolete)
·····················································
0D8h Speaker Status
------------------------------------------------------------------------------
0FDh DSP Command Status SB16
COMMAND <-COMMANDSTATUS
DESCRIPTION
Retrieves most recently successful DSP command.
NOTES
■ Reseting the DSP clears this variable.
■ Command does not support all valid DSP commands, but most.
■ MediaVision 3D-series cards use this command for DMA and IRQ detection.
SEE ALSO
0FBh DSP Status
0FCh DSP Auxiliary Status
·····················································
004h DSP Status (Obsolete)
0F1h DSP Auxiliary Status (Obsolete)
·····················································
0D8h Speaker Status
==============================================================================
MIXER REGISTERS
------------------------------------------------------------------------------
000h Reset Write SBPro
001h Status Read SBPro
002h Master Volume Read/Write SBPro Only
004h DAC Level Read/Write SBPro
006h FM Output Control Read/Write SBPro Only
00Ah Microphone Level Read/Write SBPro
00Ch Input/Filter Select Read/Write SBPro Only
00Eh Output/Stereo Select Read/Write SBPro Only
022h Master Volume Read/Write SBPro
026h FM Level Read/Write SBPro
028h CD Audio Level Read/Write SBPro
02Eh Line In Level Read/Write SBPro
030h Master Volume Left Read/Write SB16
031h Master Volume Right Read/Write SB16
032h DAC Level Left Read/Write SB16
033h DAC Level Right Read/Write SB16
034h FM Level Left Read/Write SB16
035h FM Level Right Read/Write SB16
036h CD Audio Level Left Read/Write SB16
037h CD Audio Level Right Read/Write SB16
038h Line In Level Left Read/Write SB16
039h Line In Level Right Read/Write SB16
03Ah Microphone Level Read/Write SB16
03Bh PC Speaker Level Read/Write SB16
03Ch Output Control Read/Write SB16
03Dh Input Control Left Read/Write SB16
03Eh Input Control Right Read/Write SB16
03Fh Input Gain Control Left Read/Write SB16
040h Input Gain Control Right Read/Write SB16
041h Output Gain Control Left Read/Write SB16
042h Output Gain Control Right Read/Write SB16
043h Automatic Gain Control (AGC) Read/Write SB16
044h Treble Left Read/Write SB16
045h Treble Right Read/Write SB16
046h Bass Left Read/Write SB16
047h Bass Right Read/Write SB16
080h IRQ Select Read/Write SB16
081h DMA Select Read/Write SB16
082h IRQ Status Read SB16
------------------------------------------------------------------------------
000h Reset Write SBPro
DESCRIPTION
Resets mixer to default settings.
PROCEDURE
a) Load index register
b) Wait 100µs
c) Write reset stop
RESET BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reset Stop (0)
│ │ │ │ │ │ └─────┬─ Reserved (0)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Defaults documented for each register (SBPro, SB16)
------------------------------------------------------------------------------
001h Status Read SBPro
DESCRIPTION
Contains previously selected register value.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Mixer Data Register value
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ SoundBlaster 16 sets bit 7 if previous mixer index invalid.
■ Status bytes initially 080h on startup for all but level bytes (SB16)
------------------------------------------------------------------------------
002h Master Volume Read/Write SBPro Only
VOLUME BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reserved (1)
│ │ │ │ │ │ └─────┬─ Right Master Volume bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Reserved (1)
│ │ └─────────────────────┬─ Left Master Volume bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
099h, N/A
NOTES
■ Same as register 022h selection.
SEE ALSO
022h Master Volume Read/Write
·····················································
030h Master Volume Left Read/Write
031h Master Volume Right Read/Write
------------------------------------------------------------------------------
004h DAC Level Read/Write SBPro
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Right DAC Level bit 0 (SB16, SBPro=1)
│ │ │ │ │ │ └─────┬─ Right DAC Level bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Left DAC Level bit 0 (SB16, SBPro=1)
│ │ └─────────────────────┬─ Left DAC Level bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
099h, 0CCh
NOTES
■ Mixer detection can be accomplished by looking for this register index.
■ SoundBlaster 16 will automatically update registers 031h and 032h,
transferring bits 7-4 and setting bit 3.
SEE ALSO
032h DAC Level Left Read/Write
033h DAC Level Right Read/Write
------------------------------------------------------------------------------
006h FM Output Control Read/Write SBPro Only
CONTROL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reserved (1)
│ │ │ │ │ │ └─────┬─ FM Level (bits 3-1, see notes)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Reserved (1)
│ │ └─────────────────────── FM Left Channel (0 = On, 1 = Off)
│ └─────────────────────────── FM Right Channel (0 = On, 1 = Off)
└─────────────────────────────── Reserved (0)
DEFAULT
019h, N/A
NOTES
■ FM level controls both channels.
■ If only one channel is active, the inactive channel's voices will
be routed through the active one.
■ SoundBlaster Pro will automatically update register 026h,
transferring source bits 3-0 to destination bits 7-4 and 3-0.
SEE ALSO
026h FM Level Read/Write
·····················································
034h FM Level Left Read/Write
035h FM Level Right Read/Write
------------------------------------------------------------------------------
00Ah Microphone Level Read/Write SBPro
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Microphone Level bit 0 (SB16, SBPro=0)
│ │ │ │ │ │ └─────┬─ Microphone Level bit 2-1 (SBPro)
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Reserved (0)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
011h, 000h
SEE ALSO
03Ah Microphone Level Read/Write
------------------------------------------------------------------------------
00Ch Input/Filter Select Read/Write SBPro Only
SELECT BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│ 5 │[4]│ 3 │ 2 │ 1 │[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reserved (1)
│ │ │ │ │ │ └─────┬─ Input Select (0 = Microphone,
│ │ │ │ │ └─────────┘ 1 = CD Audio, 3 = Line In)
│ │ │ │ └─────────────── Frequency (0 = Highpass, 1 = Lowpass)
│ │ │ └─────────────────── Reserved (0)
│ │ └─────────────────────── Filter Input (0 = On, 1 = Off)
│ └─────────────────────────┬─ Reserved (0)
└─────────────────────────────┘
DEFAULT
011h, N/A
SEE ALSO
03Dh Input Control Left Read/Write
03Eh Input Control Right Read/Write
------------------------------------------------------------------------------
00Eh Output/Stereo Select Read/Write SBPro Only
SELECT BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│ 5 │[4]│[3]│[2]│ 1 │[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Reserved (1)
│ │ │ │ │ │ └─────── Stereo Output Mode (1 = Stereo)
│ │ │ │ │ └─────────┬─ Reserved (0)
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Reserved (1)
│ │ └─────────────────────── Filter Output (0 = On, 1 = Off)
│ └─────────────────────────┬─ Reserved (0)
└─────────────────────────────┘
DEFAULT
011h, N/A
NOTES
■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo output.
SEE ALSO
03Ch Output Control Read/Write
------------------------------------------------------------------------------
022h Master Volume Read/Write SBPro
VOLUME BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Right Master bit 0 (SB16, SBPro=1)
│ │ │ │ │ │ └─────┬─ Right Master bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Left Master bit 0 (SB16, SBPro=1)
│ │ └─────────────────────┬─ Left Master bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
011h, 0CCh
NOTES
■ SoundBlaster 16 will automatically update registers 030h and 031h,
transferring bits 7-4 and setting bit 3.
■ SoundBlaster Pro register 002h is the same as this.
SEE ALSO
002h Master Volume Read/Write
·····················································
030h Master Volume Left Read/Write
031h Master Volume Right Read/Write
------------------------------------------------------------------------------
026h FM Level Read/Write SBPro
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Right FM Level bit 0 (SB16, SBPro=1)
│ │ │ │ │ │ └─────┬─ Right FM Level bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Left FM Level bit 0 (SB16, SBPro=1)
│ │ └─────────────────────┬─ Left FM Level bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
011h, 0CCh
NOTES
■ SoundBlaster 16 will automatically update registers 033h and 034h,
transferring bits 7-4 and setting bit 3.
■ SoundBlaster Pro will automatically update register 006h,
transferring bits 3-1 and setting bit 0.
SEE ALSO
006h FM Output Control Read/Write
·····················································
034h FM Level Left Read/Write
035h FM Level Right Read/Write
------------------------------------------------------------------------------
028h CD Audio Level Read/Write SBPro
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Right CD Audio bit 0 (SB16, SBPro=1)
│ │ │ │ │ │ └─────┬─ Right CD Audio bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Left CD Audio bit 0 (SB16, SBPro=1)
│ │ └─────────────────────┬─ Left CD Audio bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
011h, 000h
NOTES
■ SoundBlaster 16 will automatically update registers 035h and 036h,
transferring bits 7-4 and setting bit 3.
SEE ALSO
036h CD Audio Level Left Read/Write
037h CD Audio Level Right Read/Write
------------------------------------------------------------------------------
02Eh Line In Level Read/Write SBPro
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Right Line In bit 0 (SB16, SBPro=1)
│ │ │ │ │ │ └─────┬─ Right Line In bit 3-1 (SBPro)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────── Left Line In bit 0 (SB16, SBPro=1)
│ │ └─────────────────────┬─ Left Line In bit 3-1 (SBPro)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
011h, 000h
NOTES
■ SoundBlaster 16 will automatically update registers 037h and 038h,
transferring bits 7-4 and setting bit 3.
SEE ALSO
038h Line In Level Left Read/Write
039h Line In Level Right Read/Write
------------------------------------------------------------------------------
030h Master Volume Left Read/Write SB16
VOLUME BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Left Master Volume (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
of register 022h
■ SoundBlaster Pro selects register 020h for 030h.
SEE ALSO
031h Master Volume Right Read/Write
·····················································
022h Master Volume Read/Write
------------------------------------------------------------------------------
031h Master Volume Right Read/Write SB16
VOLUME BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Right Master Volume (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
of register 022h.
SEE ALSO
030h Master Volume Left Read/Write
·····················································
022h Master Volume Read/Write
------------------------------------------------------------------------------
032h DAC Level Left Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Left DAC Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
of register 024h.
■ SoundBlaster Pro selects register 022h for 032h.
SEE ALSO
033h DAC Level Right Read/Write
·····················································
004h DAC Level Read/Write
------------------------------------------------------------------------------
033h DAC Level Right Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Right DAC Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
of register 024h.
SEE ALSO
032h DAC Level Left Read/Write
·····················································
004h DAC Level Read/Write
------------------------------------------------------------------------------
034h FM Level Left Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Left FM Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
of register 026h.
SEE ALSO
035h FM Level Right Read/Write
·····················································
006h FM Output Control Read/Write
026h FM Level Read/Write
------------------------------------------------------------------------------
035h FM Level Right Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Right FM Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 0C0h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
of register 026h.
SEE ALSO
034h FM Level Left Read/Write
·····················································
006h FM Output Control Read/Write
026h FM Level Read/Write
------------------------------------------------------------------------------
036h CD Audio Level Left Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Left CD Audio Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
of register 028h.
■ SoundBlaster Pro selects register 026h for 036h.
SEE ALSO
037h CD Audio Level Right Read/Write
·····················································
028h CD Audio Level Read/Write
------------------------------------------------------------------------------
037h CD Audio Level Right Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Right CD Audio Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
of register 028h.
SEE ALSO
036h CD Audio Level Left Read/Write
·····················································
028h CD Audio Level Read/Write
------------------------------------------------------------------------------
038h Line In Level Left Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Left Line In Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
of register 02Eh.
■ SoundBlaster Pro selects register 028h for 038h.
SEE ALSO
039h Line In Level Right Read/Write
·····················································
02Eh Line In Level Read/Write
------------------------------------------------------------------------------
039h Line In Level Right Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Right Line In Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
of register 02Eh.
SEE ALSO
038h Line In Level Left Read/Write
·····················································
02Eh Line In Level Read/Write
------------------------------------------------------------------------------
03Ah Microphone Level Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┘
│ │ │ │ └─────────────┬─ Microphone Level (2dB)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
SEE ALSO
00Ah Microphone Level Read/Write
------------------------------------------------------------------------------
03Bh PC Speaker Level Read/Write SB16
LEVEL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────┬─ PC Speaker Level (2dB)
└─────────────────────────────┘
DEFAULT
N/A, 000h
------------------------------------------------------------------------------
03Ch Output Control Read/Write SB16
CONTROL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Microphone (0 = Off, 1 = On)
│ │ │ │ │ │ └─────── Right CD Audio (0 = Off, 1 = On)
│ │ │ │ │ └─────────── Left CD Audio (0 = Off, 1 = On)
│ │ │ │ └─────────────── Right Line In (0 = Off, 1 = On)
│ │ │ └─────────────────── Left Line In (0 = Off, 1 = On)
│ │ └─────────────────────┬─ Reserved (0)
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 01Fh
SEE ALSO
041h Output Gain Control Left Read/Write
042h Output Gain Control Right Read/Write
·····················································
036h CD Audio Level Left Read/Write
037h CD Audio Level Right Read/Write
038h Line In Level Left Read/Write
039h Line In Level Right Read/Write
03Ah Microphone Level Read/Write
·····················································
00Eh Output/Stereo Select Read/Write
------------------------------------------------------------------------------
03Dh Input Control Left Read/Write SB16
CONTROL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Microphone (0 = Off, 1 = On)
│ │ │ │ │ │ └─────── Right CD Audio (0 = Off, 1 = On)
│ │ │ │ │ └─────────── Left CD Audio (0 = Off, 1 = On)
│ │ │ │ └─────────────── Right Line In (0 = Off, 1 = On)
│ │ │ └─────────────────── Left Line In (0 = Off, 1 = On)
│ │ └─────────────────────── Right FM (0 = Off, 1 = On)
│ └─────────────────────────── Left FM (0 = Off, 1 = On)
└─────────────────────────────── Reserved (0)
DEFAULT
N/A, 015h
NOTES
■ Register controls remapping of left input channel
(off, left, right, or left and right)
SEE ALSO
03Eh Input Control Right Read/Write
·····················································
03Fh Input Gain Control Left Read/Write
·····················································
034h FM Level Left Read/Write
035h FM Level Right Read/Write
036h CD Audio Level Left Read/Write
037h CD Audio Level Right Read/Write
038h Line In Level Left Read/Write
039h Line In Level Right Read/Write
03Ah Microphone Level Read/Write
·····················································
00Ch Input/Filter Select Read/Write
------------------------------------------------------------------------------
03Eh Input Control Right Read/Write SB16
CONTROL BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Microphone (0 = Off, 1 = On)
│ │ │ │ │ │ └─────── Right CD Audio (0 = Off, 1 = On)
│ │ │ │ │ └─────────── Left CD Audio (0 = Off, 1 = On)
│ │ │ │ └─────────────── Right Line In (0 = Off, 1 = On)
│ │ │ └─────────────────── Left Line In (0 = Off, 1 = On)
│ │ └─────────────────────── Right FM (0 = Off, 1 = On)
│ └─────────────────────────── Left FM (0 = Off, 1 = On)
└─────────────────────────────── Reserved (0)
DEFAULT
N/A, 00Bh
NOTES
■ Register controls remapping of right input channel
(off, left, right, or left and right)
■ SoundBlaster Pro selects register 02Eh for 03Eh.
SEE ALSO
03Dh Input Control Left Read/Write
·····················································
040h Input Gain Control Right Read/Write
·····················································
034h FM Level Left Read/Write
035h FM Level Right Read/Write
036h CD Audio Level Left Read/Write
037h CD Audio Level Right Read/Write
038h Line In Level Left Read/Write
039h Line In Level Right Read/Write
03Ah Microphone Level Read/Write
·····················································
00Ch Input/Filter Select Read/Write
------------------------------------------------------------------------------
03Fh Input Gain Control Left Read/Write SB16
GAIN BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────┬─ Left Input Gain Control (2^x)
└─────────────────────────────┘
DEFAULT
N/A, 000h
SEE ALSO
040h Input Gain Control Right Read/Write
·····················································
043h Automatic Gain Control (AGC) Read/Write
·····················································
03Dh Input Control Left Read/Write
------------------------------------------------------------------------------
040h Input Gain Control Right Read/Write SB16
GAIN BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────┬─ Right Input Gain Control (2^x)
└─────────────────────────────┘
DEFAULT
N/A, 000h
SEE ALSO
03Fh Input Gain Control Left Read/Write
·····················································
043h Automatic Gain Control (AGC) Read/Write
·····················································
03Dh Input Control Right Read/Write
------------------------------------------------------------------------------
041h Output Gain Control Left Read/Write SB16
GAIN BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────┬─ Left Output Gain Control (2^x)
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ Output Gain Control has no effect when internal amplifier disabled.
SEE ALSO
042h Output Gain Control Right Read/Write
·····················································
03Ch Output Control Read/Write
------------------------------------------------------------------------------
042h Output Gain Control Right Read/Write SB16
GAIN BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┘
│ └─────────────────────────┬─ Right Output Gain Control (2^x)
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ Output Gain Control has no effect when internal amplifier disabled.
SEE ALSO
041h Output Gain Control Left Read/Write
·····················································
03Ch Output Control Read/Write
------------------------------------------------------------------------------
043h Automatic Gain Control (AGC) Read/Write SB16
AGC BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│[2]│[1]│ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Automatic Gain Control (1 = Enable)
│ │ │ │ │ │ └─────┬─ Reserved (0)
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 000h
NOTES
■ Automatic Gain Control automatically maximizes input signal strength.
SEE ALSO
03Fh Input Gain Control Left Read/Write
040h Input Gain Control Right Read/Write
------------------------------------------------------------------------------
044h Treble Left Read/Write SB16
TREBLE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Treble Left (2dB, -14dB to 14dB)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 080h
SEE ALSO
045h Treble Right Read/Write
·····················································
046h Bass Left Read/Write
------------------------------------------------------------------------------
045h Treble Right Read/Write SB16
TREBLE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Treble Right (2dB, -14dB to 14dB)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 080h
SEE ALSO
044h Treble Left Read/Write
·····················································
047h Bass Right Read/Write
------------------------------------------------------------------------------
046h Bass Left Read/Write SB16
BASS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Bass Left (2dB, -14dB to 14dB)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 080h
SEE ALSO
047h Bass Right Read/Write
·····················································
044h Treble Left Read/Write
------------------------------------------------------------------------------
047h Bass Right Read/Write SB16
BASS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Reserved (0)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Bass Right (2dB, -14dB to 14dB)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
DEFAULT
N/A, 080h
SEE ALSO
046h Bass Left Read/Write
·····················································
045h Treble Right Read/Write
------------------------------------------------------------------------------
080h IRQ Select Read/Write SB16
SELECT BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── IRQ2 (0 = Disable, 1 = Enable)
│ │ │ │ │ │ └─────── IRQ5 (0 = Disable, 1 = Enable)
│ │ │ │ │ └─────────── IRQ7 (0 = Disable, 1 = Enable)
│ │ │ │ └─────────────── IRQ10 (0 = Disable, 1 = Enable)
│ │ │ └─────────────────┬─ Reserved (1)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Unaffected by mixer reset or soft reboot.
■ Enabling multiple bits enables multiple IRQs.
SEE ALSO
081h DMA Select Read/Write
·····················································
082h IRQ Status Read
------------------------------------------------------------------------------
081h DMA Select Read/Write SB16
SELECT BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │[4]│ 3 │[2]│ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── DMA0, 8-bit (0 = Disable, 1 = Enable)
│ │ │ │ │ │ └─────── DMA1, 8-bit (0 = Disable, 1 = Enable)
│ │ │ │ │ └─────────── DMA2, Reserved (0)
│ │ │ │ └─────────────── DMA3, 8-bit (0 = Disable, 1 = Enable)
│ │ │ └─────────────────── DMA4, Reserved (0)
│ │ └─────────────────────── DMA5, 16-bit (0 = Disable, 1 = Enable)
│ └─────────────────────────── DMA6, 16-bit (0 = Disable, 1 = Enable)
└─────────────────────────────── DMA7, 16-bit (0 = Disable, 1 = Enable)
NOTES
■ Unaffected by mixer reset or soft reboot.
■ Enabling multiple 8 or 16-bit DMA bits enables multiple DMA channels.
■ Disabling all 8-bit DMA channel bits disables 8-bit DMA requests,
including translated 16-bit DMA requests.
■ Disabling all 16-bit DMA channel bits enables translation of 16-bit DMA
requests to 8-bit ones, using the selected 8-bit DMA channel.
SEE ALSO
080h IRQ Select Read/Write
------------------------------------------------------------------------------
082h IRQ Status Read SB16
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── IRQ Status, 8-bit (1 = Active)
│ │ │ │ │ │ └─────── IRQ Status, 16-bit (1 = Active)
│ │ │ │ │ └─────────── IRQ Status, MPU-401 (1 = Active)
│ │ │ │ └─────────────── Reserved (0)
│ │ │ └─────────────────┬─ ???
│ │ └─────────────────────┤ (01h = v4.04, 02h = v4.05, 08h = v4.12)
│ └─────────────────────────┤
└─────────────────────────────┘
SEE ALSO
080h IRQ Select Read/Write
==============================================================================
DMA CONTROLLERS
------------------------------------------------------------------------------
┌-────────┐ ┌──┬┬──┐ ┌──┬┬──┐
│ ┌─────┐ │ ╒╡ └┘ ╞╕─Channel 4──╒╡ └┘ ╞╕─── Channel 0 ┐
│ │ CPU │ │────╒╡ DMA2 ╞╕──────────┐ ╒╡ DMA1 ╞╕─── Channel 1 ├ 8-bit
│ └─────┘ │ ╒╡ 8237 ╞╕────────┐ │ ╒╡ 8237 ╞╕─── Channel 2 │
└────────┘ ╒╡ ╞╕──────┐ │ │ ╒╡ ╞╕─── Channel 3 ┘
└──────┘ │ │ │ └──────┘
│ │ └────────────── Channel 5 ┐
DMAC ORGANIZATION (AT) │ └──────────────── Channel 6 ├ 16-bit
└────────────────── Channel 7 ┘
─────────────────────────────────────────────────────────────────────────────
╔═══════════════╤═════════════════╤═════════════════╗
║ DMA CHANNEL │ AT ARCHITECTURE │ XT ARCHITECTURE ║
║ │ │ ║
╠═══════════════╪═════════════════╪═════════════════╣ ┐
║ 0 │ AVAILABLE │ DRAM REFRESH ║ │
╟───────────────┼─────────────────┼─────────────────╢ ├ Memory-Memory support
║ 1 │ AVAILABLE │ AVAILABLE ║ │
╟───────────────┼─────────────────┼─────────────────╢ ┘
║ 2 │ FLOPPY CONTRLR. │ FLOPPY CONTRLR. ║
╟───────────────┼─────────────────┼─────────────────╢
║ 3 │ AVAILABLE │ HDD CONTROLLER ║
╟---------------┼-----------------┼-----------------╢
║ 4 │ CASCADE │ N/A ║
╟───────────────┼─────────────────┼─────────────────╢
║ 5 │ AVAILABLE │ N/A ║
╟───────────────┼─────────────────┼─────────────────╢
║ 6 │ AVAILABLE │ N/A ║
╟───────────────┼─────────────────┼─────────────────╢
║ 7 │ AVAILABLE │ N/A ║
╚═══════════════╧═════════════════╧═════════════════╝
─────────────────────────────────────────────────────────────────────────────
PROCEDURE
─────────────────────────────────────────────────────────────────────────────
1) Enable channel mask
OUT 00Ah,004h OR cChannel ( 8-bit)
·····················································
OUT 0D4h,004h OR cChannel (16-bit)
2) Clear byte pointer
OUT 00Ch,... ( 8-bit)
·····················································
OUT 0D8h,... (16-bit)
3) Configure transfer mode
OUT 00Bh,cMode OR cChannel ( 8-bit)
·····················································
OUT 0D6h,cMode OR cChannel (16-bit)
4) Write page address
OUT { 087h,083h,081h,082h },cPage ( 8-bit)
·····················································
OUT { 08Fh,08Bh,089h,08Ah },cPage (16-bit)
5) Write offset address
OUT { 000h,002h,004h,006h },cAddressLo ( 8-bit)
OUT { 000h,002h,004h,006h },cAddressHi
·····················································
OUT { 0C0h,0C4h,0C8h,0CCh },cAddressLo (16-bit)
OUT { 0C0h,0C4h,0C8h,0CCh },cAddressHi
6) Write length - 1
OUT { 001h,003h,005h,007h },cLengthLo ( 8-bit)
OUT { 001h,003h,005h,007h },cLengthHi
·····················································
OUT { 0C2h,0C6h,0CAh,0CEh },cLengthLo (16-bit)
OUT { 0C2h,0C6h,0CAh,0CEh },cLengthHi
7) Disable channel mask
OUT 00Ah,cChannel ( 8-bit)
·····················································
OUT 0D4h,cChannel (16-bit)
------------------------------------------------------------------------------
000h Channel 0 Address, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer offset address (byte granular).
PROCEDURE
a) Output LSB of offset address (port 000h)
b) Output MSB of offset address (port 000h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
087h Channel 0 Page, 8-bit Write
001h Channel 0 Length, 8-bit Read/Write
------------------------------------------------------------------------------
001h Channel 0 Length, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 001h)
b) Output MSB of length (port 001h)
LENGTH = BYTES - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
087h Channel 0 Page, 8-bit Write
000h Channel 0 Address, 8-bit Read/Write
------------------------------------------------------------------------------
002h Channel 1 Address, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer offset address (byte granular).
PROCEDURE
a) Output LSB of offset address (port 002h)
b) Output MSB of offset address (port 002h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
083h Channel 1 Page, 8-bit Write
003h Channel 1 Length, 8-bit Read/Write
------------------------------------------------------------------------------
003h Channel 1 Length, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 003h)
b) Output MSB of length (port 003h)
LENGTH = BYTES - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
083h Channel 1 Page, 8-bit Write
002h Channel 1 Address, 8-bit Read/Write
------------------------------------------------------------------------------
004h Channel 2 Address, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer offset address (byte granular).
PROCEDURE
a) Output LSB of offset address (port 004h)
b) Output MSB of offset address (port 004h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
081h Channel 2 Page, 8-bit Write
005h Channel 2 Length, 8-bit Read/Write
------------------------------------------------------------------------------
005h Channel 2 Length, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 005h)
b) Output MSB of length (port 005h)
LENGTH = BYTES - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
081h Channel 2 Page, 8-bit Write
004h Channel 2 Address, 8-bit Read/Write
------------------------------------------------------------------------------
006h Channel 3 Address, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer offset address (byte granular).
PROCEDURE
a) Output LSB of offset address (port 006h)
b) Output MSB of offset address (port 006h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
082h Channel 3 Page, 8-bit Write
007h Channel 3 Length, 8-bit Read/Write
------------------------------------------------------------------------------
007h Channel 3 Length, 8-bit Read/Write XT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 007h)
b) Output MSB of length (port 007h)
LENGTH = BYTES - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
082h Channel 3 Page, 8-bit Write
006h Channel 3 Address, 8-bit Read/Write
------------------------------------------------------------------------------
008h Status Register, 8-bit Read XT
DESCRIPTION
Controller channel status register.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Channel 0 Terminal Count (1 = Reached)
│ │ │ │ │ │ └─────── Channel 1 Terminal Count (1 = Reached)
│ │ │ │ │ └─────────── Channel 2 Terminal Count (1 = Reached)
│ │ │ │ └─────────────── Channel 3 Terminal Count (1 = Reached)
│ │ │ └─────────────────── Channel 0 DREQ (1 = Active )
│ │ └─────────────────────── Channel 1 DREQ (1 = Active )
│ └─────────────────────────── Channel 2 DREQ (1 = Active )
└─────────────────────────────── Channel 3 DREQ (1 = Active )
NOTES
■ Terminal count bit indicates transfer complete.
------------------------------------------------------------------------------
008h Command Register, 8-bit Write XT
DESCRIPTION
Controller configuration register.
COMMAND BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Mem-Mem Transfer (1 = Enable)
│ │ │ │ │ │ └─────── Channel 0-4 Address Hold (1 = Enable)
│ │ │ │ │ └─────────── Controller (0 = Enable, 1 = Disable)
│ │ │ │ └─────────────── Timing (0 = Normal, 1 = Compressed)
│ │ │ └─────────────────── Priority (0 = Fixed, 1 = Rotating)
│ │ └─────────────────────── Write Mode (0 = Late, 1 = Extended)
│ └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
└─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
------------------------------------------------------------------------------
009h Request Register, 8-bit Write XT
DESCRIPTION
???
REQUEST BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────── Channel Request (1 = Enable)
│ │ │ │ └─────────────┬─ Reserved (0)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
------------------------------------------------------------------------------
00Ah Single Mask Register, 8-bit Write XT
DESCRIPTION
Selects individual DMA channel, and enables or disables it.
MASK BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────── Channel Mask (0 = Clear, 1 = Set)
│ │ │ │ └─────────────┬─ Reserved (0)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Program the mask register before programming channel.
SEE ALSO
00Fh Master Mask Register, 8-bit Write
------------------------------------------------------------------------------
00Bh Mode Register, 8-bit Write XT
DESCRIPTION
Selects and configures individual DMA channel.
MODE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────┬─ Operation (0 = Verify,
│ │ │ │ └─────────────┘ 1 = Write, 2 = Read)
│ │ │ └─────────────────── Auto-Initialize (0 = Off, 1 = On)
│ │ └─────────────────────── Direction (0 = Increment)
│ └─────────────────────────┬─ Operation Mode (0 = Demand,1 = Single,
└─────────────────────────────┘ 2 = Block, 3 = Cascade)
NOTES
■ Demand mode
╓───────┐ ┌──────────────────┐ ┌───┐ ┌──────┐ ┌───────╖
║ DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE ║
╙──────┬┘Y └──────────────────┘ └─┬─┘N └──┬──┬┘ └───────╜
└──┘N │ │Y └──┘N │Y
│ ┌────┐ ┌─┴─┐ │
└───────────┤DREQ│────┤EOP├────────┘
Y└───┬┘ N└───┘Y
└──┘N
Transfer begins as soon as DREQ becomes active and continues until
terminal count is reached or an external end-of-process (EOP) is
signalled. In auto-initialized mode, only an external EOP stops
the transfer. Deactivating DREQ pauses the transfer, reactivating
it continues.
■ Single mode
╓───────┐ ┌──────────────────┐ ┌───┐ ┌───────╖
║ DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├─────────────│ DONE ║
╙───────┘ └──────────────────┘ └─┬─┘N └───────╜
│ │Y
│ ┌──────┐ ┌────┐ │
└─┤ DACK │──┤DREQ│──────┘
Y└───┬──┘ Y└───┬┘
└──┘N └──┘N
Transfer begins as soon as DREQ becomes active and continues until
the next byte is transferred and loops until terminal count.
■ Block mode
╓───────┐ ┌──────────────────┐ ┌───┐ ┌──────┐ ┌───────╖
║ DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE ║
╙──────┬┘Y └──────────────────┘ └─┬─┘N └──┬──┬┘ └───────╜
└──┘N │ │Y └──┘N │Y
│ ┌─┴─┐ │
└─────────────────────┤EOP├────────┘
N└───┘Y
Transfer begins as soon as DREQ becomes active and continues until
terminal count is reached or an external end-of-process (EOP) is
signalled. In auto-initialized mode, only an external EOP stops
the transfer.
■ Cascade mode
Reserved for chaining DMA controllers.
------------------------------------------------------------------------------
00Ch Clear Byte Pointer Register, 8-bit Write XT
DESCRIPTION
Resets 8-bit DMA controller address pointer on output (any value).
------------------------------------------------------------------------------
00Dh Temporary Register, 8-bit Read XT
DESCRIPTION
Contains memory-to-memory data bytes.
------------------------------------------------------------------------------
00Dh Master Reset Register, 8-bit Write XT
DESCRIPTION
Resets 8-bit DMA controller and all its channels on output (any value).
SEE ALSO
00Eh Master Enable Register, 8-bit Write
------------------------------------------------------------------------------
00Eh Master Enable Register, 8-bit Write XT
DESCRIPTION
Enables all 8-bit DMA controller channels on output (any value).
SEE ALSO
00Dh Master Reset Register, 8-bit Write
------------------------------------------------------------------------------
00Fh Master Mask Register, 8-bit Write XT
DESCRIPTION
Selects multiple DMA channels, enabling or disabling them.
MASK BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Channel 0 (0 = Enable, 1 = Disable)
│ │ │ │ │ │ └─────── Channel 1 (0 = Enable, 1 = Disable)
│ │ │ │ │ └─────────── Channel 2 (0 = Enable, 1 = Disable)
│ │ │ │ └─────────────── Channel 3 (0 = Enable, 1 = Disable)
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
SEE ALSO
00Ah Single Mask Register, 8-bit Write
------------------------------------------------------------------------------
081h Channel 2 Page, 8-bit Write XT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 2 (64K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
SEE ALSO
004h Channel 2 Address, 8-bit Read/Write
005h Channel 2 Length, 8-bit Read/Write
------------------------------------------------------------------------------
082h Channel 3 Page, 8-bit Write XT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 3 (64K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
SEE ALSO
006h Channel 3 Address, 8-bit Read/Write
007h Channel 3 Length, 8-bit Read/Write
------------------------------------------------------------------------------
083h Channel 1 Page, 8-bit Write XT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 1 (64K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
SEE ALSO
002h Channel 1 Address, 8-bit Read/Write
003h Channel 1 Length, 8-bit Read/Write
------------------------------------------------------------------------------
087h Channel 0 Page, 8-bit Write XT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 0 (64K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┘
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 1M of physical memory with 8-bit DMA.
SEE ALSO
000h Channel 0 Address, 8-bit Read/Write
001h Channel 0 Length, 8-bit Read/Write
------------------------------------------------------------------------------
089h Channel 6 Page, 16-bit Write AT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 6 (128K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
SEE ALSO
0C8h Channel 6 Address, 16-bit Read/Write
0CAh Channel 6 Length, 16-bit Read/Write
------------------------------------------------------------------------------
08Ah Channel 7 Page, 16-bit Write AT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 7 (128K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
SEE ALSO
0CCh Channel 7 Address, 16-bit Read/Write
0CEh Channel 7 Length, 16-bit Read/Write
------------------------------------------------------------------------------
08Bh Channel 5 Page, 16-bit Write AT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 5 (128K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
SEE ALSO
0C4h Channel 5 Address, 16-bit Read/Write
0C6h Channel 5 Length, 16-bit Read/Write
------------------------------------------------------------------------------
08Fh Channel 4 Page, 16-bit Write AT
DESCRIPTION
Programs channel page address.
PAGE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Page, Channel 4 (128K granular)
│ │ │ │ │ │ └─────┤
│ │ │ │ │ └─────────┤
│ │ │ │ └─────────────┤
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Reserved channel for cascading DMA controllers.
■ Page addressing allows access to 16M of physical memory with 16-bit DMA.
SEE ALSO
0C0h Channel 4 Address, 16-bit Read/Write
0C2h Channel 4 Length, 16-bit Read/Write
------------------------------------------------------------------------------
0C0h Channel 4 Address, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer offset address (word granular).
PROCEDURE
a) Output LSB of offset address/2 (port 0C0h)
b) Output MSB of offset address/2 (port 0C0h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
08Fh Channel 4 Page, 16-bit Write
0C2h Channel 4 Length, 16-bit Read/Write
------------------------------------------------------------------------------
0C2h Channel 4 Length, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 0C2h)
b) Output MSB of length (port 0C2h)
LENGTH = BYTES/2 - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
08Fh Channel 4 Page, 16-bit Write
0C0h Channel 4 Address, 16-bit Read/Write
------------------------------------------------------------------------------
0C4h Channel 5 Address, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer offset address (word granular).
PROCEDURE
a) Output LSB of offset address/2 (port 0C4h)
b) Output MSB of offset address/2 (port 0C4h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
08Bh Channel 5 Page, 16-bit Write
0C6h Channel 5 Length, 16-bit Read/Write
------------------------------------------------------------------------------
0C6h Channel 5 Length, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 0C6h)
b) Output MSB of length (port 0C6h)
LENGTH = BYTES/2 - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
08Bh Channel 5 Page, 16-bit Write
0C4h Channel 5 Address, 16-bit Read/Write
------------------------------------------------------------------------------
0C8h Channel 6 Address, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer offset address (word granular).
PROCEDURE
a) Output LSB of offset address/2 (port 0C8h)
b) Output MSB of offset address/2 (port 0C8h)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
089h Channel 6 Page, 16-bit Write
0CAh Channel 6 Length, 16-bit Read/Write
------------------------------------------------------------------------------
0CAh Channel 6 Length, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 0CAh)
b) Output MSB of length (port 0CAh)
LENGTH = BYTES/2 - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
089h Channel 6 Page, 16-bit Write
0C8h Channel 6 Address, 16-bit Read/Write
------------------------------------------------------------------------------
0CCh Channel 7 Address, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer offset address (word granular).
PROCEDURE
a) Output LSB of offset address/2 (port 0CEh)
b) Output MSB of offset address/2 (port 0CEh)
NOTES
■ Reading port retrieves current transfer offset address.
SEE ALSO
08Ah Channel 7 Page, 16-bit Write
0CEh Channel 7 Length, 16-bit Read/Write
------------------------------------------------------------------------------
0CEh Channel 7 Length, 16-bit Read/Write AT
DESCRIPTION
Programs channel transfer length.
PROCEDURE
a) Output LSB of length (port 0CEh)
b) Output MSB of length (port 0CEh)
LENGTH = BYTES/2 - 1
NOTES
■ Reading port retrieves transfer length remaining.
SEE ALSO
08Ah Channel 7 Page, 16-bit Write
0CCh Channel 7 Address, 16-bit Read/Write
------------------------------------------------------------------------------
0D0h Status Register, 16-bit Read AT
DESCRIPTION
Controller channel status register.
STATUS BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Channel 4 Terminal Count (1 = Reached)
│ │ │ │ │ │ └─────── Channel 5 Terminal Count (1 = Reached)
│ │ │ │ │ └─────────── Channel 6 Terminal Count (1 = Reached)
│ │ │ │ └─────────────── Channel 7 Terminal Count (1 = Reached)
│ │ │ └─────────────────── Channel 4 DREQ (1 = Active )
│ │ └─────────────────────── Channel 5 DREQ (1 = Active )
│ └─────────────────────────── Channel 6 DREQ (1 = Active )
└─────────────────────────────── Channel 7 DREQ (1 = Active )
NOTES
■ Terminal count bit indicates transfer complete.
------------------------------------------------------------------------------
0D0h Command Register, 16-bit Write AT
DESCRIPTION
Controller configuration register.
COMMAND BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Mem-Mem Transfer (1 = Enable)
│ │ │ │ │ │ └─────── Channel 0-4 Address Hold (1 = Enable)
│ │ │ │ │ └─────────── Controller (0 = Enable, 1 = Disable)
│ │ │ │ └─────────────── Timing (0 = Normal, 1 = Compressed)
│ │ │ └─────────────────── Priority (0 = Fixed, 1 = Rotating)
│ │ └─────────────────────── Write Mode (0 = Late, 1 = Extended)
│ └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
└─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
------------------------------------------------------------------------------
0D2h Request Register, 16-bit Write AT
DESCRIPTION
???
REQUEST BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select (-4)
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────── Channel Request (1 = Enable)
│ │ │ │ └─────────────┬─ Reserved (0)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
------------------------------------------------------------------------------
0D4h Single Mask Register, 16-bit Write AT
DESCRIPTION
Selects individual DMA channel, and enables or disables it.
MASK BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select (-4)
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────── Channel Mask (0 = Clear, 1 = Set)
│ │ │ │ └─────────────┬─ Reserved (0)
│ │ │ └─────────────────┤
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
NOTES
■ Program the mask register before programming channel.
SEE ALSO
0DEh Master Mask Register, 16-bit Write
------------------------------------------------------------------------------
0D6h Mode Register, 16-bit Write AT
DESCRIPTION
Selects and configures individual DMA channel.
MODE BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─┬─ Channel Select (-4)
│ │ │ │ │ │ └─────┘
│ │ │ │ │ └─────────┬─ Operation (0 = Verify,
│ │ │ │ └─────────────┘ 1 = Write, 2 = Read)
│ │ │ └─────────────────── Auto-Initialize (0 = Off, 1 = On)
│ │ └─────────────────────── Direction (0 = Increment)
│ └─────────────────────────┬─ Operation Mode (0 = Demand,1 = Single,
└─────────────────────────────┘ 2 = Block, 3 = Cascade)
NOTES
■ See register 00Bh notes for description of modes.
------------------------------------------------------------------------------
0D8h Clear Byte Pointer Register, 16-bit Write AT
DESCRIPTION
Resets 16-bit DMA controller address pointer on output (any value).
------------------------------------------------------------------------------
0DAh Temporary Register, 16-bit Read AT
DESCRIPTION
Contains memory-to-memory data words.
NOTES
■ Reserved for cascading DMA controllers on AT architecture.
------------------------------------------------------------------------------
0DAh Master Reset Register, 16-bit Write AT
DESCRIPTION
Resets 16-bit DMA controller and all its channels on output (any value).
SEE ALSO
0DCh Master Enable Register, 16-bit Write
------------------------------------------------------------------------------
0DCh Master Enable Register, 16-bit Write AT
DESCRIPTION
Enables all 16-bit DMA controller channels on output (any value).
SEE ALSO
0DAh Master Reset Register, 16-bit Write
------------------------------------------------------------------------------
0DEh Master Mask Register, 16-bit Write AT
DESCRIPTION
Selects multiple DMA channels, enabling or disabling them.
MASK BYTE
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
│ │ │ │ │ │ │ └─── Channel 4 (0 = Enable, 1 = Disable)
│ │ │ │ │ │ └─────── Channel 5 (0 = Enable, 1 = Disable)
│ │ │ │ │ └─────────── Channel 6 (0 = Enable, 1 = Disable)
│ │ │ │ └─────────────── Channel 7 (0 = Enable, 1 = Disable)
│ │ │ └─────────────────┬─ Reserved (0)
│ │ └─────────────────────┤
│ └─────────────────────────┤
└─────────────────────────────┘
SEE ALSO
0D4h Single Mask Register, 16-bit Write
==============================================================================
GLOSSARY
------------------------------------------------------------------------------
Adaptive Differential Pulse Code Modulation (ADPCM)
Creative Labs ADPCM does not follow the CCITT ADPCM recommendations,
but does provide a similar quality compression scheme for 8-bit samples
(down to 2, 2.6, or 4-bits per sample).
Creative Labs ADPCM is not supported by many SoundBlaster clones.
·············································································
Advanced Signal Processor (ASP, CSP)
Creative Labs proprietary programmable signal processor.
Although development tools for the ASP are scarce, Creative Labs has
released demo software implementing QSound technology and various
compression schemes (from IMA ADPCM to µ-law and α-law).
Recently renamed from ASP to CSP (Creative Signal Processor) to avoid
confusion with a U.S. company of the same name.
·············································································
Aliasing
Digital artifacts indicative of finite numerical representation, especially
noticeble at areas of high deviation.
·············································································
Amplitude
Maximum departure of the value of an alternating current or wave from an
average value. In acoustics, amplitude is intimately related to loudness.
·············································································
Amplitude Modulation (AM)
Carrier wave amplitude modulation in response to the strength of a signal.
·············································································
Analog
Representation with periodic waves. Contrast digital.
·············································································
Analog-To-Digital Convertor (ADC)
Device which converts from an analog signal (such as sound) to a digital one.
·············································································
Auto-Initialize Mode (AI)
Mode where DMA controller processes multiple blocks without explicit
reprogramming. Contrast single-cycle mode.
·············································································
Bass
Acoustic quality describing sounds of lower frequency in the spectrum.
·············································································
Creative Music Synthesis??? (C/MS)
Obsolete AM synthesizer chipset implementing twelve stereo sine generators
modulated in predefined banks by one of four programmable noise generators.
Originally implemented on the Creative Labs GameBlaster card; supported by
the SoundBlaster 1.0 and 1.5 (as an upgrade option).
·············································································
Decibel (dB)
Unit of measurement describing the ratio of two acoustic, mechanical, or
electrical signal strengths; expressed as ten times the common logarithm
of their power ratio.
·············································································
Digital
Representation with finite numerical elements. Contrast analog.
·············································································
Digital Signal Processor (DSP)
Device which performs mathematical operations across a digital waveform.
SoundBlasters barely qualify, with only ADPCM to their name.
·············································································
Digital-To-Analog Convertor (DAC)
Device which converts from a digital signal to an analog one.
·············································································
Direct Memory Access (DMA)
Method of using external hardware to perform block memory copy operations
so the central processing unit can be dedicated to more sophisticated tasks.
·············································································
Frequency
Number of repetitive occurences, or cycles, within a given time domain.
·············································································
Frequency Modulation (FM)
Carrier wave frequency modulation in response to a signal; resulting in
decreased distortion levels.
·············································································
Frequency Modulation Synthesis (FM Synthesis)
Describes a method of synthesizing sound using a programmable carrier and
one or more programmable frequency modulators. Popularized by Fairlight.
Yamaha OPL-hardware implementation is closer to phase modulation.
·············································································
Gain
Ratio of increase of input over output in an amplifier.
·············································································
General MIDI
Standardized 128-entry patch map and associated specifications.
Patch quality differs greatly across implementations.
Regulated by the MIDI Manufacturer's Association (MMA).
·············································································
Hertz (Hz)
Unit of frequency measurement describing number of cycles per second.
·············································································
High Speed Mode
SoundBlaster DMA transfer mode operating at a frequency greater than 23kHz,
using up clocks cycles otherwise destined for DSP command interpretation.
Obsolete on SoundBlaster 16, but supported. (unofficial)
·············································································
Mixer
SoundBlaster component analagous to an army of volume controls.
·············································································
MPU-401
Developed by Roland, the MPU-401 is the industry standard MIDI interface.
It can operate either as an intelligent or a dumb UART.
·············································································
Music Instrument Digital Interface (MIDI)
Standard for communication between electronic musical instruments, related
hardware, and digital computers. Serial protocol operating at 38.4Kbps.
·············································································
Nyquist Theorem
Accurate reproduction of a signal demands that the sampling frequency be
at least twice the rate of the highest frequency in the source signal.
·············································································
Pulse Code Modulation (PCM)
Digital sound reproduction method that outputs discrete amplitude values
at a steady rate to produce an analog sound.
·············································································
QSound (tm)
Filtering technique providing a larger panning arc than traditional
stereo techniques (180°). Licensed by Creative Labs.
·············································································
Sample
Digital representation of analog signal.
·············································································
Single Cycle Mode (SC)
Mode where DMA controller processes a single block. Contrast auto-init mode.
·············································································
Treble
Acoustic quality describing sounds of higher frequency in the spectrum.
·············································································
Universal Asynchronous Receiver/Transmitter (UART)
Device responsible for conversion to or from a serial bit stream.
·············································································
Wave Table Synthesis
Synthesis method employing sampled instruments and sounds as opposed to
artifically generated sound effects.
·············································································
==============================================================================
ACKNOWLEDGEMENTS
------------------------------------------------------------------------------
Ron Arts, Chris Barrett, Hussam Eassa, Brandom Hume, Cornel Huth,
Draeden/VLA, Jeffery Lee, Alain Jacques, Jerry Joplin, Eckard Lehmann,
Juan Carlos Leon, Bob Manson, Tom Marshall, Richard Mulder, Josha Munnik,
Eric Oostendorp, Tino Riethmueller, Jim Roberts, Peter Roberts,
Jens-Uwe Rumstich, Daniel Sachs, Edward Schlunder, Peter Sprenger,
Heiko Stassburg, Mark Stehr, Jim Vieira
==============================================================================
REFERENCES
------------------------------------------------------------------------------
STANDARDS
────────────────────────────────────────────────────────────────────────────
CCITT G.721 - ADPCM @ 32 kbits/sec
CCITT G.723 - ADPCM @ 24 and 40 kbits/sec
────────────────────────────────────────────────────────────────────────────
PUBLICATIONS
────────────────────────────────────────────────────────────────────────────
MIDI Processing Unit MPU-401 Technical Reference v1.5
Roland Corporation Roland Corp. 1985
────────────────────────────────────────────────────────────────────────────
Schaum's Outline: Theory and Problems of Acoustics
William Seto McGraw-Hill 1971
────────────────────────────────────────────────────────────────────────────
Yamaha OPL2 Technical Reference CAT#: LSI-6MF2622
Yamaha Corporation Yamaha Corp.
+1 408 437-3133 (USA)
────────────────────────────────────────────────────────────────────────────
Yamaha OPL3 Technical Reference CAT#: LSI-2438120
Yamaha Corporation Yamaha Corp.
+1 408 437-3133 (USA)
────────────────────────────────────────────────────────────────────────────
BOOKS
────────────────────────────────────────────────────────────────────────────
The SoundBlaster Book ISBN: 3-88745-560-6
Josha Munnik, Eric Oostendorp SYBEX 1992
────────────────────────────────────────────────────────────────────────────
Das SoundBlaster Profibuch ISBN: 3-89319-583-1
Eckard Lehmann, Tino Riethmueller, Heiko Stassburg Addison-Wesley 1993
────────────────────────────────────────────────────────────────────────────
FILES
────────────────────────────────────────────────────────────────────────────
Audio File Formats FAQ AudioFormats.*
Guido van Rossum
ftp.cwi.nl::pub/audio TEXT
────────────────────────────────────────────────────────────────────────────
DMA Programming Information VLA_DMA.ZIP 3K
Draeden/VLA 1993
x2ftp.oulu.fi::pub/msdos/programming/vla TEXT
────────────────────────────────────────────────────────────────────────────
Joystick Programming Information GAMEPORT.INF 3K
Bill Frolik 1990
x2ftp.oulu.fi::pub/msdos/programming/specs TEXT
────────────────────────────────────────────────────────────────────────────
MIDI Standards Documentation MIDI*.*
Various
ftp.cs.ruu.nl::/pub/MIDI/DOC TEXT
────────────────────────────────────────────────────────────────────────────
OPL2 Programming Information ADLIB_SB.TXT 20K
Jeffery Lee 1992
x2ftp.oulu.fi::pub/msdos/programming/faq TEXT
────────────────────────────────────────────────────────────────────────────
OPL3 Programming Information OPL3_DOC.ARJ 18K
Vladimir Arnost 1994
x2ftp.oulu.fi::pub/msdos/programming/docs TEXT, GIF
────────────────────────────────────────────────────────────────────────────
PC Game Programmer's Enyclopedia v1.0 PCGPE10.ZIP 702K
Mark Feldman 1994
x2ftp.oulu.fi::pub/msdos/programming/gpe TEXT, PASCAL
────────────────────────────────────────────────────────────────────────────
VBE/AI SDK v1.03 VAISDK.EXE 388K
Video Electronic Standards Association 1994
ftp.wi.leidenuniv.nl:/pub/audio/programming TEXT, C
────────────────────────────────────────────────────────────────────────────
Virtual DMA Specification (VDS) PW0519.ZIP 47K
John Hagerson of Microsoft 1992
ftp.microsoft.com::Softlib/MSLFILES TEXT, WORD
────────────────────────────────────────────────────────────────────────────
SOURCE
────────────────────────────────────────────────────────────────────────────
SoundBlaster Freedom Project v3.0 SBF3.ZIP 85K
Jeff Bird, Christopher Box 1994
x2ftp.oulu.fi::pub/msdos/programming/music C, ASM
────────────────────────────────────────────────────────────────────────────
SoundBlaster Programming v1.0 SBPROG10.ZIP 36K
Christopher Box 1993
x2ftp.oulu.fi::pub/msdos/programming/music C++, ASM
────────────────────────────────────────────────────────────────────────────
SoundX SoundBlaster Library SOUNDX.ZIP 32K
Peter Sprenger 1993
x2ftp.oulu.fi::pub/msdos/programming/music C, ASM
────────────────────────────────────────────────────────────────────────────
SNDBLST v4.0 SNDBLST4.ZIP 96K
David Welch 1993
x2ftp.oulu.fi::pub/msdos/programming/music C
────────────────────────────────────────────────────────────────────────────
NEWSGROUPS
────────────────────────────────────────────────────────────────────────────
SoundBlaster Programming
alt.sb.programmer
Soundcard Technical Discussion
comp.sys.ibm.pc.soundcard.tech
comp.sys.ibm.pc.soundcard.misc
────────────────────────────────────────────────────────────────────────────
==============================================================================
CONTACT ADDRESSES
------------------------------------------------------------------------------
André Baresel baresel@informatik.hu-berlin.de (Internet )
Cyder of
Green Apple André Baresel (Snailmail)
Hans-Grade-Ring 5
14480 Potsdam
Germany
Craig Jackson Craig.Jackson@launchpad.unc.edu (Internet )
Craig Jackson (Snailmail)
119 Penwood Drive
Cary, North Carolina 27511
United States of America